Le retour arrière en mode insertion dans vi n'efface pas le caractère

70

Vi, je suis nouveau sur vi, en fait, j'ai commencé à apprendre vi à partir d'aujourd'hui et je me suis retrouvé bloqué par le comportement de la touche Retour arrière.

En fait, lorsque j'ai lancé vi sur Ubuntu 12.04 pour la première fois, ma touche de retour arrière fonctionnait normalement, mais après cela, elle a commencé à se comporter étrangement. Chaque fois que j'appuie sur le retour arrière en mode insertion, il ne fait que déplacer un endroit vers la gauche au lieu d'effacer le caractère.

Comment puis-je récupérer la fonctionnalité de retour arrière par défaut? Veuillez noter que je ne souhaite pas installer vim ou configurer nocompatibilty.

Saprativa Bhattacharjee
la source

Réponses:

39

C'est un comportement correct pour vi, et cela efface le caractère, mais ne le montre pas en le remplaçant par un blanc comme dans vim. Vous remarquerez que vous écrasez le caractère effacé par un autre ou que vous revenez en mode commande.

Par exemple, en commençant par le mode commande sur une ligne vide, la ligne suivante contiendra fo:

ifooBackspaceEsc

Avant que vous appuyiez sur la Esctouche, la ligne sera lue foo, mais la dernière oa été étiquetée comme "colonne d'effacement". Voir http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88 (principalement le point 4 sous cet en-tête et parcourir un peu plus loin pour en savoir plus sur <Control> -H).

geirha
la source
73

Voici la solution la plus simple.
Ouvrez un terminal, accédez au répertoire personnel et tapez

vi .vimrc

un nouveau fichier ouvert ajoute maintenant ces lignes au fichier et quitte en enregistrant

$ set nocompatible
$ set backspace=2
Adithya Chakilam
la source
9
L'OP a mentionné qu'ils ne veulent pas utilisernocompatibility
kiri
1
aucune compatibilité n'est nécessaire, vous pouvez également le faire en ajoutant simplement la deuxième ligne
Adithya Chakilam
1
La deuxième ligne ne fonctionne pour moi que si j'ajoute également la première ligne.
djjeck
Commencé à partir d'un fichier .vimrc vide, il s'est demandé pourquoi le retour arrière ne fonctionnait pas sur mac dans iTerm2. Merci beaucoup!
Igor Malyk
@ minerz029 add yet c'est la réponse pour laquelle la plupart des gens sont ici, car le titre de la page n'existait pas.
Muhd
23

Vous devez passer en mode "insertion" en déplaçant le curseur avec i. Il existe d'autres moyens de supprimer des caractères directement. Vous pouvez télécharger un fichier PowerPoint que j'utilise pour enseigner un cours sur VI ici .

On dirait que vous êtes en mode "Commande". Pour déplacer votre curseur:
H= Gauche, J= Haut, K= Bas, L= Droite

Une fois que vous avez positionné votre curseur, vous pouvez supprimer le texte comme suit:
x Supprime le caractère situé sous le curseur
X Supprime le caractère précédant le curseur
dwSupprime du curseur jusqu'au mot suivant
dd Supprime la ligne sur laquelle se trouve le curseur.

Pour saisir du texte , vous pouvez utiliser l'un des modes de saisie de texte.
aAjoute du texte à la droite du curseur
AAjoute du texte à la fin de la ligne actuelle
iAjoute du texte à la gauche du curseur
IAjoute test au début de la ligne actuelle
oOuvre une nouvelle ligne sous la ligne actuelle et vous place en mode de saisie de texte
OOuvre une nouvelle ligne Au - dessus de la ligne actuelle et vous met en mode de saisie de texte

Pour quitter le mode de saisie de texte et revenir au mode commande, utilisez Esc.

Pour annuler les modifications: (favori de l’étudiant)
uAnnuler la dernière commande entrée
UAnnuler toutes les modifications apportées à la ** ligne en cours **

Pour enregistrer / quitter: :wEnregistre (enregistre) le fichier et reste ouvert
:wqEnregistre (enregistre) le fichier et quitte le VI.
:qQuitte (quitte) si vous n'avez apporté aucune modification.
:q! Quitte (quitte) sans enregistrer les modifications
ZZ. Enregistre ( enregistre ) le fichier et quitte le VI. (identique à :wq)

Argusvision
la source
11
L'OP a mentionné que le comportement mystérieux se produit en mode insertion . Donc, ce n'est pas la réponse à la question posée.
LarsH
En réalité, l'OP n'a pas indiqué en mode insertion . La question a été modifiée.
Argusvision
1
D'accord. Vous avez raison. On dirait que j'ai fait une hypothèse. D'après mon expérience, la plupart des nouveaux utilisateurs de VI rencontrent des problèmes de changement de mode et de navigation en mode commande. Mes étudiants se plaignent souvent et reprochent à VI d'avoir un comportement erratique lorsqu'il s'agit simplement d'une erreur de l'utilisateur ou de ne pas maîtriser l'ensemble des commandes.
Argusvision
1
Compréhensible. Je conviens que c'est la réaction commune au mode sans insertion.
LarsH
Argus, "en mode insertion" a été ajouté au titre de la question lors d'une édition, mais il figurait dans le corps de la question depuis le début.
LarsH
13

Installez le package vim complet pour obtenir les fonctionnalités de retour arrière et de flèche

sudo apt-get update
sudo apt-get install vim
Ratnala Jagadeesh
la source
Cela fonctionne comme prévu .. Meilleure réponse
Vicky
C'est la réponse parfaite. Pas besoin de modifier les fichiers de configuration, il suffit d'installer le vim-runtimepaquet et tout fonctionne comme je suis habitué. Merci!
Olli D-Metz