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?
@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).
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.
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
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
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)
Respuestas:
Supongo que estás usando vim ya que está etiquetado como Linux. Tratar:
(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 $HOME
para verificar la ruta del directorio de inicio).fuente
vim
y novi
. La mayoría de las funciones avanzadas y útiles devim
están deshabilitadas de forma predeterminada a menos que lo inicie convim
.set nocompatible
en su propia línea en el .vimrcUbuntu 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 vim
para obtener todas las funciones jugosas de las que todos hablan.fuente
: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
fuente
:set term=builtin_ansi
trabajé para mí.:set term=xterm
No.export TERM=xterm
en la línea de comando antes de invocar vi y luego:set term=xterm
en vim 7.2 funciona para mí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.
fuente
vi
yvim
. Pero en mi cajavim
imprimecommand not found
: D:set term=ansi
funcionó para mí gracias Raz . dices que 'no es compatible'. Me pregunto, ¿dijiste eso porque elvim-tiny
paquete de ubuntu, que estoy usando, es diferente de vainillavi
o la configuración de términos también funcionaría en eso?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:
fuente
Lo único que funcionó para mí fue ": set term = ansi"
fuente
vi
en Windows o en el lado de ubuntu? :)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 retrocesofuente
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.
fuente
Quizás también quieras probar los 'noesckeys'
fuente
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:
fuente
En la línea de comando escribe esto:
fuente