Lorsque j'ai essayé d'utiliser les touches de direction en mode insertion dans l'éditeur vi
, les caractères suivants sont insérés dans l'éditeur:
S'il vous plaît aidez-moi à résoudre ce problème.
Si vous n'avez pas déjà un fichier .vimrc
dans votre répertoire personnel, créez-en un en utilisant ceci:
vim ~/.vimrc
Ajoutez cette ligne en haut du fichier:
set nocompatible
Enregistrez le fichier et cela devrait résoudre le problème pour vous. :)
Installez vim -> Ceci résoudra le problème.
Sudo apt-get install vim
Il existe de nombreux bons tutoriels sur vim/vi sur youtube ou sur le web en général. Pour votre problème, voir ici
Continuez ensuite pour ouvrir les fichiers normalement :
vi desired-file
Avec vi
, en cliquant sur i vous activez la commande pour Insérer du texte .
Cette commande vous permet d’insérer du texte dans votre fichier.
Et à droite, en cliquant:
Jusqu'à ce que vous désactiviez cette commande.
Pour désactiver une commande dans vi
: cliquez simplement sur Esc
Ensuite, vous retrouverez une utilisation normale de vos touches de direction:
Pour votre information, voici quelques commandes vi
:
De ceci source .
:x
Return quitte vi , écrit un fichier modifié dans un fichier nommé dans l'invocation d'origine:wq
Return quitte vi , écrit un fichier modifié dans un fichier nommé dans l'invocation d'origine:q
Return quitter (ou quitter) vi :q!
Return quitter vi même si les dernières modifications n'ont pas été enregistrées pour cet appel vi
↓ déplace le curseur d'une ligne vers le bas
↓ déplace le curseur vers le haut d'une ligne
← déplacer curseur à gauche d'un caractère
→ déplace le curseur à droite d'un caractère
u
annuler tout ce que vous venez de faire; une simple bascule.
refaire tout ce que vous venez de faire
i
insère du texte avant le curseur, jusqu'à ce que Esc frappéI
insère un texte au début de la ligne en cours, jusqu'à ce que Esc frappéa
ajoute du texte après le curseur, jusqu'à ce que Esc frappéA
ajoute du texte à la fin de la ligne en cours, jusqu'à ce que Esc frappéo
ouvrir et mettre le texte dans une nouvelle ligne sous la ligne actuelle, jusqu'à ce que Esc frappéO
ouvrir et mettre le texte dans une nouvelle ligne au-dessus de la ligne actuelle, jusqu'à ce que Esc frappé
r
remplace un seul caractère sous le curseur (non Esc nécessaire)cw
change le mot actuel avec le nouveau texte, en commençant par le caractère situé sous le curseur, jusqu'à ce que Esc frappéx
effacez un seul caractère sous le curseurNx
effacez N caractères, en commençant par le caractère situé sous le curseurdw
supprime le mot simple commençant par le caractère situé sous le curseurC
change (remplace) les caractères de la ligne en cours jusqu'à ce que Esc frappéD
supprime le reste de la ligne, en commençant par la position actuelle du curseur
dd
supprimer toute la ligne en coursNdd
delete N lignes, en commençant par la ligne en cours; par exemple, 5dd supprime 5 lignesyy
copier (tirer, couper) la ligne en cours dans le tamponNyy
copier (tirer, couper) les N lignes suivantes, y compris la ligne en cours, dans la mémoire tamponp
collez la ou les lignes dans la mémoire tampon dans le texte situé après la ligne en cours.
0
(zero) déplace le curseur au début de la ligne en cours (celle avec le curseur)$
déplace le curseur à la fin de la ligne en coursw
déplace le curseur au début du mot suivantb
déplace le curseur au début du mot précédent:0
Return ou 1G
déplace le curseur vers la première ligne du fichier:n
Return ou nG
déplace le curseur vers la ligne n:$
Return ou G
déplace le curseur vers la dernière ligne du fichier
/string
search forward pour l'occurrence d'une chaîne dans le texte?string
recherche en arrière pour l'occurrence d'une chaîne dans le texten
déplace vers la prochaine occurrence de la chaîne de rechercheN
déplace vers la prochaine occurrence de la chaîne de recherche dans la direction opposée
Pour désactiver l’impression des lettres en appuyant sur les flèches en mode édition, procédez comme suit:
vi $HOME/.exrc
(créez un fichier s'il n'existe pas), puis ajoutez-y la ligne set nocompatible
et sauvegardez-le.
Il existe trois modes dans l'éditeur vi, à savoir:
Lorsque vous ouvrez un fichier, vous êtes en mode par défaut. Maintenant, si vous voulez aller à une position spécifique dans votre texte, utilisez les touches fléchées ou utilisez h, j, k, l clés. Notez que cela ne fonctionne que si vous n’avez pas appuyé sur i (ou n’importe quel autre mode d’entrée en entrant une commande comme a, A, I).
La raison de "B" peut être parce que les touches fléchées en mode de saisie ne fonctionnent pas comme des touches fléchées, alors appuyez simplement sur Esc pour passer en mode défaut à tout moment. Quand passer en mode de saisie, appuyez sur i ou aet pour naviguer, appuyez simplement sur i clé et utilisez les touches fléchées ou h, j, k, l.
J'ai eu exactement le même problème, mais pas seulement sur ma machine locale, mais aussi sur les connexions via PuTTY sur une machine à sous dans une machine Win7 VM sur un récepteur Citrix. L’hôte local et les hôtes distants montrent qu’une réinstallation d’Ubuntu a eu exactement le même problème.
Après avoir découvert que
$ localectl list-keymaps
Couldn't find any console keymaps.
Provoque ce comportement étrange VI J'ai installé le paquet console-data qui résout le problème!
Sudo apt-get install console-data
Toutes les explications données sont un peu bizarres. J'ai vi mais pas vim installé.
Vérification des alternatives: /etc/alternatives/vi
→ /usr/bin/vim.tiny
Donc, vi
est vim.tiny
et utilise /etc/vim/vimrc.tiny
.
Et dans vimrc.tiny
vous trouvez la ligne suivante:
set compatible
Ce qui est presque la seule chose dans ce fichier. Notez que, dans /etc/vim/vimrc
, il utilise nocompatible
.
Donc, soit installer vim, soit changer le fichier vimrc.tiny
, ou créer votre propre ~/.vimrc
qui devrait contenir la ligne:
set nocompatible
Remarque:
Il y a de bonnes informations dans les autres messages, mais aucun des messages n'a tenté d'expliquer pourquoi ce problème est survenu. Beaucoup de gens sont obligés de trébucher à l'avenir. Aussi, pourriez-vous marquer cette question comme résolue puisque l’un des messages précédents vous a probablement aidé?
Voici une explication :
Vi est un éditeur qui existe depuis longtemps, avec des racines qui reviennent aux systèmes Unix. C'est un bon outil, mais il a été itéré et maintenant, il y a mieux. Vim a été écrit plus tard et est cette itération. Les gens se réfèrent généralement à vi comme "vim-minimal" et à vim est une version "améliorée" de vi. Vous pouvez le penser comme ceci: vi est le noyau et vim le développe.
Probablement comment vous avez découvert le comportement :
Pour que vous ayez découvert ce problème, vous avez appuyé sur "i" pour entrer en mode insérer, puis vous avez utilisé les touches de direction pour naviguer dans la ligne et le point d'édition corrects. C'est ce qui a causé votre problème de caractère inattendu.
Solution 1 ou 2
1) vi someFile
Lors de l'utilisation de vi, déplacez-vous d'abord vers le point d'édition, puis entrez en mode insertion.
2) vim someFile
Utilisez simplement vim dès le début.
Je ne saurais trop insister pour lire le manuel (pages de manuel) ou utiliser -h pour obtenir de l'aide. Une fois que vous vous êtes adapté aux modèles de Shell, les pages de manuel deviennent votre meilleur ami. Exemple: man vi
ou man vim
Valide que Vim est installé .
Ouvrez une fenêtre de console et exécutez:
dpkg --list | grep vim
Si vous obtenez quelque chose de similaire à cela, vous pouvez simplement commencer à utiliser vim.
~ $ dpkg --list | grep vim
ii vim 2:7.4.052-1ubuntu3 AMD64 Vi IMproved - enhanced vi editor
ii vim-common 2:7.4.052-1ubuntu3 AMD64 Vi IMproved - Common files
ii vim-runtime 2:7.4.052-1ubuntu3 all Vi IMproved - Runtime files
ii vim-tiny 2:7.4.052-1ubuntu3 AMD64 Vi IMproved - enhanced vi editor - compact version
Si la commande Invite ne renvoie rien, vim is n'est pas installé. Utilisez les exemples ci-dessous pour mettre à jour vos référentiels, puis installez vim.
Sudo apt-get update
Sudo apt-get install vim
Si vous n'utilisez vi ou vim que lorsque vous cherchez sur Internet comment réparer quelque chose et que vous oubliez de taper vim
name__, il existe un moyen de le réparer pour l'avenir. Je vous conseille de faire attention. Vous pouvez utiliser un alias pour écraser vi avec une référence à vim, de sorte que peu importe ce que vous tapez dans un avenir peu fréquent, vous obtenez vim sans ce "oops!" moment. Vous pouvez toujours supprimer un alias plus tard.
Tapez vim .bashrc
. Descendez sur la ligne vide avec seulement un ~
(ou sur toute autre ligne commençant par alias
(afin qu’ils soient regroupés), puis appuyez sur la touche i pour entrer dans le mode -insert- Sur sa propre ligne, entrez les informations suivantes:
alias vi='vim'
Appuyez sur Esc
puis tapez :wq
. Maintenant, vous devez recharger le fichier. Tapez source .bashrc
Tout autre shell ouvert après avoir effectué ces modifications chargera automatiquement le fichier .bashrc.
Cela peut aussi être dû à la variable TERM
; définissez-le par exemple comme ceci:
export TERM=xterm
Sur certains systèmes, l'option nocompatible
n'est pas disponible ou ne résoudra pas le problème si un plug-in casse la fonctionnalité de la flèche. Voici une solution de contournement ...
Editez le fichier .exrc
pour inclure les lignes suivantes:
map! ^[OA ^[ka
map! ^[OB ^[ja
map! ^[OC ^[la
map! ^[OD ^[ha
Ou, si le problème existe uniquement en mode normal, vous pouvez modifier le nom nmap
et ignorer le a
suivant, comme suit:
nmap! ^[OA ^[k
etc.
Voici les combinaisons de touches nécessaires pour les produire (en montrant le premier seulement):
map! <CTRL-V><Up-Arrow> <CTRL-V><ESC>ka
Cela sort du mode d’édition, se déplace dans la direction voulue et revient en mode d’édition. Ceci est nécessaire pour surmonter Vi en lisant la séquence d'échappement sous la forme d'une séquence littérale <ESC> <O> <A>, etc.
L'éditeur vi traditionnel ne reconnaît pas les touches de direction (... de suite). Il y a deux solutions:
Pour le VI, créez ou modifiez le fichier "~/.exrc" ou VIM créez ou modifiez le fichier "~/.vimrc" défini ou ajouté à la ligne.
set nocompatible
Au moment d'écrire ces lignes, des éloges sur le deuxième article le plus voté se demandent pourquoi leur inscription n'a pas été acceptée. La raison en est qu'il y a des hôtes qui n'autorisent pas l'installation d'autres éditeurs. Même dans ce cas, vim a parfois les mêmes effets, il y a donc une foule d’informations utiles tirées des deux premières entrées. Je ne peux pas commenter, mais j'espère que cela clarifie les raisons pour lesquelles ni l'une ni l'autre n'est correcte à 100% dans 100% des cas.
Pour une raison quelconque, Ubuntu a omis d’initialiser envvar HOME pour l’utilisateur root sur mon nouveau 18.04 VPS. Si tel est le cas, vi ne peut pas trouver le fichier .vimrc. Le problème ne se produit pas pour les utilisateurs normaux (dans/home /).
Pour vérifier la variable:
echo $HOME
S'il en résulte une ligne vide, la variable n'est pas définie. Le problème est parti après
export HOME=/root
J'ai déplacé la commande dans le fichier /root/.bashrc (je ne sais pas où cela est généralement défini).
Sur cette machine je devais make sure
que
set nocompatible
est le last entry in ~/.vimrc
. Ou au moins une des dernières entrées, en particulier plus aucun plugin n'est chargé après.
HTH