La touche de suppression ne fonctionne pas dans vim sur iTerm2


16

Tout d'abord, j'ai tapé quelque chose en mode insertion, comme

Hello

À ce stade, si je ne quitte pas le mode d'insertion, deletefonctionne et peut supprimer le mot entier si je veux.

Si je quitte le mode insertion et que j'ouvre à nouveau le mode insertion, cela Hellone peut pas être supprimé par delete. Mais le contenu nouvellement tapé 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éparer?


Avec «supprimer», vous voulez dire retour arrière? Supprimer des mots entiers en mode insertion peut être fait avec Ctrl-W, essayez cela. Si cela ne fait rien, il y a un problème avec votre vim. J'utilise iTerm 2 et je n'ai jamais eu de tels problèmes.
oarfish

Oui, je peux utiliser dwou dw+ shiften mode normal pour supprimer des mots. Mais backspaceet ctrl+ les wdeux ne fonctionnent pas dans la deuxième situation que j'ai mentionnée ci-dessus.
Zen

Mais vous pouvez utiliser le retour arrière sur la ligne de commande normale en dehors de vim? Très étrange.
oarfish

@oarfish, oui, je peux, et dans le serveur distant vim, je n'ai pas un tel problème, tout se passe tout d'un coup. Je ne peux pas avoir la moindre idée pour l'instant.
Zen

Quelle version de vim possédez-vous? J'ai vim 7.4.481 et je ne peux pas reproduire le problème.
jan.h

Réponses:


16

C'est une fonctionnalité de vim, bien que l'IIRC ne soit pas activé par défaut.

backspaceest un paramètre dans vim, et vous pouvez définir trois paramètres différents: indent, eoletstart

Si vous courez :help backspace, il vous 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.

Celui qui n'est pas réglé pour vous l'est start.

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


"fonctionnalité" ... Pour une raison quelconque, je le vois activé par défaut sur un nouveau macOS 10.13 avec une dernière version de vim. Cette solution résout toujours le problème.
Taylor Edmiston

9

J'avais aussi cela, les valeurs par défaut du traitement de texte naturel étaient fausses pour moi.

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

Aller à Preferences > Profiles > Keyset charger le préréglage par défaut Natural Text Editinget supprimer toutes les entrées qui sont sur deleteet le deletecomportement. Après cela, cela fonctionne comme prévu.


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

@DagW a confirmé que la liaison ^ H n'est pas nécessaire.
Salyangoz

2
J'ai dû creuser trop profondément dans les mauvais messages juste pour trouver cela comme la bonne réponse, merci beaucoup!
RecuencoJones

1
J'ai eu le problème sur mon Tmux et Iterm2 pendant longtemps, je n'ai jamais trouvé de solution tant que je n'ai pas trouvé votre message ici.
1234

1
Oui! il s'agit de la configuration d'iterm, pas de vim lui-même.
Rodrirokr
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.