30 votes

La touche Suppr ne fonctionne pas dans vim sur iTerm2

D'abord, j'ai tapé quelque chose en mode insertion, par exemple

Hello

A ce stade, si je ne sortais pas du mode insertion, delete fonctionne et je peux supprimer le mot entier si je veux.

Si je quitte le mode insertion, et que j'ouvre à nouveau le mode insertion, ceci Hello ne peut être supprimé par delete . Mais le contenu nouvellement saisi peut être supprimé.

J'ai renommé mon .vimrc, le problème persiste.

Et j'ai fait quelques tests sur un serveur distant via iterm, je n'ai pas rencontré le même problème.

Quelle pourrait être la cause de ce problème ? Comment le résoudre ?

0 votes

Par "supprimer", vous entendez "effacer" ? La suppression de mots entiers en mode insertion peut se faire avec Ctrl-W Essayez donc. Si cela ne fait rien, il y a quelque chose qui ne va pas avec votre vim. J'utilise iTerm 2 et je n'ai jamais eu de tels problèmes.

0 votes

Oui, je peux utiliser dw ou dw + shift en mode normal pour supprimer des mots. Mais backspace y ctrl + w Les deux ne fonctionnent pas dans la deuxième situation que j'ai mentionnée ci-dessus.

0 votes

Mais vous pouvez utiliser l'espacement arrière sur la ligne de commande normale en dehors de vim ? Très étrange.

34voto

Salyangoz Points 393

J'ai également eu ce problème, les valeurs par défaut du traitement naturel du texte n'étaient pas les bonnes pour moi.

  • MacBook Pro (15 pouces, 2018)
  • 10.14.3 (Mojave)
  • Iterm2 3.2.7

Aller à Preferences > Profiles > Keys et charger le preset par défaut Natural Text Editing et supprimer toutes les entrées qui concernent delete y delete comportement. Après cela, il fonctionne comme prévu.

9 votes

Idem, sauf que j'ai supprimé les entrées concernant "Del->", mais je n'ai pas ajouté de liaison "Sends ^H". Ensuite, cela a fonctionné comme prévu.

0 votes

@DagW confirme que la liaison ^H n'est pas nécessaire.

3 votes

Il a fallu fouiller dans des messages erronés pour trouver la bonne réponse, merci beaucoup !

24voto

Jay Thompson Points 4026

C'est une fonctionnalité de vim, bien qu'elle ne soit pas activée par défaut (IIRC).

backspace est un paramètre dans vim, et vous pouvez définir trois paramètres différents : indent , eol et start

Si vous exécutez :help backspace il vous le dira :

Influences the working of `<BS>`, `<Del>`, `CTRL-W` and `CTRL-U` in Insert
mode.  This is a list of items, separated by commas.  Each item allows
a way to backspace over something:

value     effect
indent    allow backspacing over autoindent
eol       allow backspacing over line breaks (join lines)
start     allow backspacing over the start of insert; CTRL-W and CTRL-U
          stop once at the start of insert.

Celle qui n'est pas réglée pour vous est start .

Si vous ajoutez set backspace=indent,eol,start à votre .vimrc, vous pourrez revenir en arrière sur n'importe quoi en mode insertion.

0 votes

"feature"... Pour une raison que j'ignore, elle est activée par défaut sur un MacOS 10.13 récent avec une installation brew de la dernière version de vim. Cette solution résout toujours le problème.

3voto

ZazOufUmI Points 185

Dans mon cas, après avoir essayé toutes les solutions possibles trouvées sur Internet, c'est juste que l'option Delete key sends ^H n'a pas été sélectionné.

Assurez-vous donc que cette option est sélectionné ici : iTerm2 > Preferences > Profiles > Keys

0 votes

C'est en dessous du menu déroulant "presets" en bas, mais ça n'aide pas pour vim sur MBP 2021 Monterey

0 votes

"n'a pas été sélectionné" : voulez-vous dire que vous avez dû l'ajouter ou le supprimer pour qu'il fonctionne ?

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X