Teclas de flecha vi de Linux rotas en el modo de inserción


95

Mis teclas de flecha no funcionan en vi en el modo de inserción en casa, solo insertan una nueva línea y una letra mayúscula, como 'A'. ¿Hay alguna forma de solucionarlo?


3
Me refiero a la distribución de Linux.
Miquel

¿Trabajan fuera de casa? :-)
Brian Agnew

4
Obviamente, la solución es emacs. Obviamente.
Paul Nathan

38
@Paul Nathan - Si la solución es emacs, entonces no quiero saber cuál es el problema.
Chas. Owens

Respuestas:


107

Supongo que estás usando vim ya que está etiquetado como Linux. Tratar:

:set nocompatible

(Es posible que desee configurar su .vimrc con esto agregando este comando. Cree un nuevo archivo .vimrc si aún no está presente en su directorio de inicio, ejecute echo $HOMEpara verificar la ruta del directorio de inicio).


7
Asegúrese de iniciar vi con el comando vimy no vi. La mayoría de las funciones avanzadas y útiles de vimestán deshabilitadas de forma predeterminada a menos que lo inicie con vim.
pts

1
@pts: solo en sistemas rotos. Empezar vim como vi en todas mis cajas funciona bien; sin embargo, hay algunas cajas de CentOS que he usado que demuestran el comportamiento del que estás hablando.
Chas. Owens

¿Alguien puede editar esta respuesta para incluir cómo se vería en un vimrc?
Stephan

1
@Stephan Add set nocompatibleen su propia línea en el .vimrc
Matthew Wilcoxson

En Ubuntu, resolví esto simplemente instalando vim (sudo apt install vim) desde ese momento en vi funciona bien con las teclas de flecha en el modo de inserción. Editar: Veo ahora que Han ya lo mencionó a continuación aquí.
pizzamonster

74

Ubuntu se envía por defecto con vim-tiny, que no tiene todas las campanas y silbidos que tiene vim.

Haz un rápido sudo apt-get install vimpara obtener todas las funciones jugosas de las que todos hablan.


1
Esto era exactamente lo que necesitaba en mint linux. Al instalar vim, aún pude comenzar a usar "vi" y ahora se habilitó todo el resaltado de código. Qué conocimiento tan fantástico de Linux :)
wired00

1
Esto funcionó para mi Raspberry Pi (Jessie Lite). Estaba experimentando este problema cuando aseguraba el shell en él, pero ahora está resuelto por completo :-)
JakeD

35

:set term=builtin_ansi

lo arregló para mí. Puede pegarlo en vim mientras está en modo de escape, (modo pitido) o agregarlo al final de ~ / .vimrc sin el ":" inicial


: set term = xterm también podría funcionar (y más fácil de recordar).
Alexx Roche

FY, :set term=builtin_ansitrabajé para mí. :set term=xtermNo.
FractalSpace

en una de mis cajas de Linux que uso export TERM=xtermen la línea de comando antes de invocar vi y luego :set term=xtermen vim 7.2 funciona para mí
Alexx Roche

¡Funciona perfecto! ¡Gracias!
Akhmedzianov Danilian

Esto funciona para habilitar la navegación con las teclas de flecha, pero eliminó por completo toda la codificación de colores en la terminal.
Ken Ingram

16

vi no admite teclas de flecha en el modo de inserción. Utilice vim. Aunque su vi puede ser simplemente un enlace a vim, puede estar configurado para comportarse como el vi "original" y, por lo tanto, deshabilita las teclas de flecha. Simplemente invoque vim directamente.


Aunque esto no es una solución, es la mejor explicación para el comportamiento (imo), dejando clara la diferencia entre viy vim. Pero en mi caja vimimprime command not found: D
Daniel W.

@DanFromGermany Tal vez solo tenga un vi instalado y no vim. Intente instalar vim a través del administrador de paquetes de su sistema Linux si desea utilizarlo.
Lothar

:set term=ansifuncionó para mí gracias Raz . dices que 'no es compatible'. Me pregunto, ¿dijiste eso porque el vim-tinypaquete de ubuntu, que estoy usando, es diferente de vainilla vio la configuración de términos también funcionaría en eso?
n611x007

8

Otra variación más: este problema apareció para mí después de algunos cambios .vimrc. Una búsqueda concertada finalmente reveló que mi inteligente reasignación de ESC en modo normal no era una buena idea. Eliminarlo resolvió el problema:

" 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

Intenté todo después de experimentar este problema, y ​​esto era lo que estaba buscando, ¡gracias!
Dan Bartlett

Gracias por la solución, miré por todas partes. ¿Alguna idea de por qué la reasignación de escape causa problemas?
foto

6

Lo único que funcionó para mí fue ": set term = ansi"


1
Esto también parece haber funcionado para mí usando un contenedor Docker.
ohlando

1
Este también funcionó para mí. Estoy usando cmd.exe en Windows y sshing en ubuntu usando
vagrant

@ CodeCodeO-1-O-log-n entonces ¿qué lado estaba usando vien Windows o en el lado de ubuntu? :)
n611x007

En Windows, ejecuté cmd.exe y luego vagrant ssh en el servidor ubuntu y luego vi en el servidor. Pero luego comencé a usar Putty y ya no necesito hacer eso y Putty está funcionando muy bien para mí.
Codelogn

2

Tuve el mismo problema con las teclas de flecha, pero cuando lo usé, ¿configuró nocp o nocompatible, entonces mi retroceso no funcionó correctamente

por alguna razón, cuando instalé vim con sudo apt-get install vim, vi ya no tenía ningún problema con las flechas o el retroceso


1

Acabo de tener un problema con las teclas de flecha después de cambiar para usar git en .vim.

He instalado este repositorio: https://github.com/sunaku/.vim

y después de investigar durante una hora, descubrí que el complemento AutoClose (que de todos modos no me gustó) rompió las teclas de flecha.

Los documentos del complemento sugieren que uno debería establecer set ttimeoutlen = 100, ¡pero eso no funcionó para mí! (usando urxvt + screen o urxvt, e incluso xterm)

Así que eliminé el complemento al final.


0

Quizás también quieras probar los 'noesckeys'


0

Tuve el mismo problema al usar vim dentro de Windows 8.1 con Cygwin.

La solución que funcionó para mí es, simplemente ejecute el siguiente comando en su terminal Cygwin:

cp vimrc_example.vim ~/.vimrc

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.