Frapper les touches fléchées ajoute des caractères dans l'éditeur vi

139

Lorsque j'ai essayé d'utiliser les touches fléchées en mode d'insertion dans l'éditeur vi , les caractères suivants sont insérés dans l'éditeur:

  • pour je reçois B,
  • pour Je reçois A,
  • pour je reçois D,
  • pour je reçois C.

S'il vous plaît, aidez-moi à résoudre ce problème.

    
posée bvb 05.10.2013 - 07:04
la source

11 réponses

174

Si vous n’avez pas encore de 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égler le problème pour vous. :)

    
réponse donnée Gaurav Manchanda 05.10.2013 - 09:23
la source
43

Installer vim - & gt; Cela résoudra le problème.

sudo apt-get install vim

Il existe de nombreux tutoriels vim / vi sur youtube ou sur le Web en général. Pour votre problème, voir ici

Ensuite, continuez à ouvrir les fichiers normalement :

vi desired-file
    
réponse donnée sthysel 21.11.2012 - 09:03
la source
26

Avec vi , lorsque vous cliquez 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 sur:

  • sur il va insérer un "A",
  • sur il va insérer un "B",
  • ...

Jusqu'à vous désactivez cette commande.
Pour désactiver une commande dans vi : cliquez simplement sur Esc
Et puis vous récupérerez une utilisation normale de vos touches fléchées:

  • pour monter,
  • pour descendre,
  • ...

FYI, voici quelques commandes vi :
À partir de cette source .

:x Retourne quit vi , en écrivant le fichier modifié dans le fichier nommé lors de l'invocation d'origine
:wq Retour Quitter vi , en écrivant le fichier modifié dans le fichier nommé dans l'invocation originale
:q Retourne quitte (ou quitte) vi
:q! Retourne quit vi même si les dernières modifications n'ont pas été enregistrées pour cet appel vi

déplacer le curseur sur une ligne
déplacer le curseur sur une ligne < br> déplacer un caractère à gauche du curseur
déplacer un caractère à droite du curseur

u annuler tout ce que vous venez de faire; une simple bascule
. refaire tout ce que vous venez de faire

i insérer du texte avant le curseur, jusqu’à ce que Esc touche
I insérer du texte au début du courant line, jusqu’à ce que Esc taper
a ajouter du texte après le curseur, jusqu’à ce que Esc taper
A ajouter texte à la fin de la ligne en cours, jusqu’à ce que Esc touche
o ouvre et place le texte dans une nouvelle ligne sous la ligne actuelle, jusqu’à Esc tapez
O ouvrez et placez le texte sur une nouvelle ligne au-dessus de la ligne courante, jusqu’à ce que Esc accède à

r remplacer un seul caractère sous le curseur (non Esc nécessaire)
cw modifier le mot actuel avec un nouveau texte, commençant par le caractère sous le curseur, jusqu'à ce que Esc touche
x supprimer caractère unique sous le curseur
Nx supprimer N caractères, commençant par le caractère sous le curseur
dw supprimer le mot unique commençant par le caractère sous le curseur
C modifier (remplacer) les caractères de la ligne en cours, jusqu'à ce que Esc taper
D supprimer le reste de la ligne, en commençant par la position actuelle du curseur

dd supprimer toute la ligne en cours
Ndd supprimer N lignes, en commençant par la ligne en cours; Par exemple, 5dd supprime 5 lignes
yy copier (yank, cut) la ligne actuelle dans le tampon
Nyy copier (yank, cut) les N lignes suivantes, y compris la ligne courante, dans le tampon
p coller la ou les lignes du tampon dans le texte après la ligne en cours

0 (zéro) déplacer le curseur au début de la ligne en cours (celle avec le curseur)
$ déplacer le curseur pour terminer de la ligne en cours
w déplacer au début du mot suivant
b déplacer revenir au début du mot précédent
:0 Retourne ou 1G déplace le curseur sur la première ligne du fichier
:n Retourne ou nG move curseur sur la ligne n
:$ Retourne ou G déplace le curseur sur la dernière ligne du fichier

/string recherche pour l'occurrence de la chaîne dans le texte
?string recherche en arrière pour l'occurrence de la chaîne dans le texte
n déplacer vers la prochaine occurrence de la chaîne de recherche
N déplacer vers la prochaine occurrence de la chaîne de recherche dans le sens opposé

    
réponse donnée Boris 05.10.2013 - 08:52
la source
15

Pour désactiver l’impression de lettres lorsqu’on appuie sur les flèches en mode édition, vous pouvez le faire en suivant

vi $HOME/.exrc 

(créer un fichier s’il n’existe pas), puis ajouter la ligne set nocompatible et enregistrer.

    
réponse donnée Aniket Thakur 08.08.2015 - 14:46
la source
11

Il existe trois modes dans l'éditeur vi à savoir:

  • mode de commande
  • mode d’entrée
  • mode par défaut.

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 simplement les touches fléchées ou utilisez h , j , k , l clés. Notez que cela ne fonctionnerait que si vous n'avez pas appuyé sur i (ou toute autre commande d'entrée en mode de saisie comme a , A , I ).

La raison de «B» peut être que les touches fléchées du mode de saisie ne fonctionnent pas comme des touches fléchées. Appuyez simplement sur Esc pour passer en mode par défaut à tout moment. Quand passer en mode de saisie, appuyez sur i ou a , et pour naviguer, appuyez simplement sur la touche i et utilisez les touches fléchées ou h , j , k , l .

    
réponse donnée ps_cool 21.11.2012 - 08:14
la source
6

J'ai eu exactement le même problème, mais pas seulement sur ma machine locale, mais aussi sur les connexions via un mastic sur une machine Sles dans une VM Win7 sur un récepteur Citrix. L'hôte local et les hôtes distants ont tous deux le même problème après une réinstallation d'Ubuntu.

Après avoir découvert que

$ localectl list-keymaps 
Couldn't find any console keymaps.

Provoque ce comportement étrange de VI J'ai installé le paquetage console-data qui résout le problème!

sudo apt-get install console-data
    
réponse donnée kitingChris 18.01.2017 - 11:53
la source
3

Toutes les explications données sont un peu bizarres. J'ai installé vi mais pas vim.

Vérification des alternatives: /etc/alternatives/vi & amp; rightarrow; /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 /etc/vim/vimrc utilise nocompatible .

Installez donc vim ou modifiez le fichier vimrc.tiny ou créez votre propre ~/.vimrc qui doit contenir la ligne:

set nocompatible
    
réponse donnée Gunstick 10.01.2017 - 23:11
la source
1

L'éditeur vi traditionnel ne reconnaît pas les touches fléchées (... afair). Il existe deux solutions:

  1. utilise vim au lieu de vi
  2. utilisez h, j, k et l pour naviguer (vous ne pouvez pas naviguer en éditant sur le vi btw traditionnel.)
réponse donnée MadMike 05.10.2013 - 07:51
la source
1

Note:

Il y a de bonnes informations dans les autres articles, mais aucun des messages n'a tenté d'expliquer pourquoi ce comportement s'est produit. Beaucoup de gens sont obligés de trébucher sur cela à l'avenir. De plus, pourriez-vous marquer cette question comme résolue, car 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 remontant 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 y penser comme ceci: vi est le noyau et vim s’étend dessus.

Probablement comment vous avez découvert le comportement :

Pour que vous ayez découvert ce problème, vous avez appuyé sur " i " pour accéder au mode insérer , puis utiliser les touches fléchées pour naviguer sur la ligne correcte et modifier point. C'est ce qui a causé votre problème inattendu.

Solution 1 ou 2

1) vi someFile Lors de l’utilisation de vi , accédez d’abord au point d’édition, puis entrez en mode insertion.

2) vim someFile Utilisez simplement vim depuis le début.

Je ne peux pas insister suffisamment pour lire le manuel (pages de manuel) ou utiliser -h pour obtenir de l'aide. Une fois que vous vous êtes ajusté aux motifs du shell, les pages de manuel deviennent votre meilleur ami. Exemple: man vi ou man vim

Validez que Vim est installé .

Ouvrez une fenêtre de console et exécutez:

dpkg --list | grep vim

Si vous obtenez quelque chose de similaire, 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 l'invite de commande ne contient 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

Au cas où vous utiliseriez vi ou vim uniquement lorsque vous cherchiez sur Internet comment réparer quelque chose et que vous oubliez de taper vim , il y a un moyen de le résoudre pour l'avenir. Je vous préviens 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 le futur peu fréquent, vous obtenez vim sans cela "oups!" moment. Vous pouvez toujours supprimer un alias ultérieurement.

Tapez vim .bashrc . Accédez à la ligne vide avec uniquement un ~ (ou à toute autre ligne commençant par alias (afin qu'ils soient regroupés), puis appuyez sur la touche i pour saisir -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 qui s'ouvre après avoir effectué ces modifications chargera automatiquement le fichier .bashrc.

    
réponse donnée D75 30.10.2016 - 05:20
la source
1

Cela peut aussi être dû à la variable TERM ; le définir par exemple comme ceci:

 export TERM=xterm
    
réponse donnée Jasper Nuyens 07.07.2017 - 15:54
la source
1

Sur certains systèmes, l’option nocompatible n’est pas disponible ou elle ne résout pas le problème si un plug-in brise la fonctionnalité des touches fléchées. Voici une solution de contournement ...

Modifiez 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 passer à nmap et ignorer le a suivant, comme suit:

nmap! ^[OA ^[k

et ainsi de suite.

Voici les combinaisons de touches nécessaires pour les produire (montrant uniquement la première):

map! <CTRL-V><Up-Arrow> <CTRL-V><ESC>ka

Ceci échappe au mode édition, se déplace dans la direction souhaitée et rentre en mode édition. Ceci est nécessaire pour vaincre Vi en lisant la séquence d'échappement sous la forme d'une séquence de littéral & lt; ESC & gt; & lt; O & gt; & lt; A & gt ;, etc.

Source: lien

    
réponse donnée Dominic Comtois 08.06.2017 - 04:33
la source

Lire d'autres questions sur les étiquettes