Touches fléchées Linux vi cassées en mode insertion


95

Mes touches fléchées ne fonctionnent pas en vi en mode insertion à la maison, elles insèrent juste chacune une nouvelle ligne et une lettre majuscule, comme «A». Y a-t-il moyen d'arranger ça?


3
Je veux dire la distribution de Linux?
Miquel

Travaillent-ils loin de chez eux? :-)
Brian Agnew

4
Evidemment, la solution est emacs. Évidemment.
Paul Nathan

38
@Paul Nathan - Si la solution est emacs, alors je ne veux pas savoir quel est le problème.
Chas. Owens

Réponses:


107

Je suppose que vous utilisez vim car il est étiqueté comme Linux. Essayer:

:set nocompatible

(Vous pouvez configurer votre .vimrc avec ceci en lui ajoutant cette commande. Créez un nouveau fichier .vimrc s'il n'est pas déjà présent dans votre répertoire personnel, exécutez echo $HOMEpour vérifier le chemin du répertoire personnel.)


7
Assurez-vous de démarrer vi avec la commande vimet non vi. La plupart des fonctionnalités avancées et utiles de vimsont désactivées par défaut, sauf si vous le lancez avec vim.
pts

1
@pts - uniquement sur les systèmes défectueux. Démarrer vim comme vi sur toutes mes boîtes fonctionne très bien; cependant, j'ai utilisé certaines boîtes CentOS qui illustrent le comportement dont vous parlez.
Chas. Owens

Quelqu'un peut-il modifier cette réponse pour inclure à quoi elle ressemblerait dans un vimrc?
Stephan

1
@Stephan Ajouter set nocompatiblesur sa propre ligne dans le .vimrc
Matthew Wilcoxson

Sur Ubuntu, j'ai résolu ce problème en installant simplement vim (sudo apt install vim) à partir de ce moment sur vi fonctionne bien avec les touches fléchées en mode insertion. Edit: Je vois maintenant que cela a déjà été mentionné par Han ci-dessous ici.
pizzamonster

74

Ubuntu est livré par défaut avec vim-tiny, qui n'a pas toutes les cloches et les sifflets de vim.

Faites un rapide sudo apt-get install vimpour obtenir toutes les fonctionnalités juteuses dont tout le monde parle.


1
C'était exactement ce dont j'avais besoin dans mint linux. En installant vim, je pouvais toujours commencer à utiliser "vi" et toute la mise en évidence du code était maintenant activée. Quel fantastique morceau de connaissance Linux :)
wired00

1
Cela a fonctionné pour mon Raspberry Pi (Jessie Lite).
J'éprouvais

35

:set term=builtin_ansi

réparé pour moi. Vous pouvez soit le coller dans vim en mode d'échappement, (mode bip) ou l'ajouter à la fin de ~ / .vimrc sans le début ":"


: set term = xterm pourrait également fonctionner (et plus facile à retenir).
Alexx Roche

FYI a :set term=builtin_ansitravaillé pour moi. :set term=xtermpas.
FractalSpace

sur une de mes boîtes Linux que j'utilise export TERM=xtermen ligne de commande avant d'appeler vi puis :set term=xtermdans vim 7.2 fonctionne pour moi
Alexx Roche

Fonctionne parfaitement! Je vous remercie!
Akhmedzianov Danilian

Cela fonctionne pour activer la navigation par touches fléchées, mais cela a complètement tué tout le codage couleur dans le terminal.
Ken Ingram

16

vi ne prend pas en charge les touches fléchées en mode insertion. Utilisez vim. Bien que votre vi ne soit qu'un lien vers vim, il peut être configuré pour se comporter comme le vi "original" et ainsi désactiver les touches fléchées. Appelez simplement vim directement.


Bien que ce ne soit pas une solution, c'est la meilleure explication du comportement (imo), faisant clairement la différence entre viet vim. Mais sur ma boîte vimimprime command not found: D
Daniel W.

@DanFromGermany Peut-être que vous n'avez installé qu'un vi et non pas vim. Veuillez essayer d'installer vim via le gestionnaire de paquets de votre système Linux si vous souhaitez l'utiliser.
lothar

:set term=ansitravaillé pour moi grâce Raz . vous dites qu'il «ne prend pas en charge». Je me demande si vous avez dit cela parce que le vim-tinypaquet d'ubuntu -j'utilise- est différent de vanilla viou est-ce que la définition des termes fonctionnerait aussi dans ce cas?
n611x007

8

Encore une autre variante: ce problème est apparu pour moi après quelques changements .vimrc. Une recherche concertée a finalement révélé que ma re-cartographie intelligente de l'ESC en mode normal n'était pas une bonne idée. Le supprimer a résolu le problème:

" this is NOT something you want in .vimrc:
" In normal mode, hitting Esc turns off search highlights:
nmap <ESC> :nohl<CR>  " Do NOT add this to .vimrc

J'ai tout essayé après avoir rencontré ce problème, et c'est ce que je cherchais, merci!
Dan Bartlett

Merci pour le correctif, j'ai cherché partout. Une idée de la raison pour laquelle le remappage d'évasion pose des problèmes?
nonphoto

6

La seule chose qui a fonctionné pour moi était ": set term = ansi"


1
Cela semble également avoir fonctionné pour moi en utilisant un conteneur Docker.
ohlando

1
Celui-ci a fonctionné pour moi aussi. J'utilise cmd.exe dans Windows et sshing dans ubuntu en utilisant vagrant
codelogn

@ CodeCodeO-1-O-log-n alors quel côté utilisiez-vous visur les fenêtres ou le côté ubuntu? :)
n611x007

Sous Windows, j'ai exécuté cmd.exe puis vagrant ssh sur le serveur ubuntu, puis vi sur le serveur. Mais plus tard, j'ai commencé à utiliser Putty et je n'ai plus besoin de le faire et Putty fonctionne très bien pour moi.
codelogn

2

J'ai eu le même problème avec les touches fléchées, mais lorsque j'ai utilisé ce paramètre nocp ou nocompatible, mon retour arrière ne fonctionnait pas correctement

pour une raison quelconque, lorsque j'ai installé vim avec sudo apt-get install vim, vi n'avait plus de problèmes avec les flèches ou le retour arrière


1

Je viens d'avoir un problème avec les touches fléchées après avoir basculé pour utiliser git dans .vim.

J'ai installé ce repo - https://github.com/sunaku/.vim

et après avoir fouillé pendant une heure, j'ai trouvé que le plugin AutoClose (qui n'aimait pas de toute façon) cassait les touches fléchées.

La documentation du plugin suggère de définir set ttimeoutlen = 100, mais cela n'a pas fonctionné pour moi! (en utilisant urxvt + screen ou urxvt, et même xterm)

J'ai donc supprimé le plugin à la fin.


0

Vous voudrez peut-être aussi essayer 'noesckeys'


0

J'ai eu le même problème lors de l'utilisation de vim dans Windows 8.1 avec Cygwin.

La solution a fonctionné pour moi est, exécutez simplement la commande suivante dans votre terminal Cygwin:

cp vimrc_example.vim ~/.vimrc

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.