Repara las teclas de flecha que muestran A, B, C, D en vi (no en vim)

16

Sé que en vim puedo agregar

set nocompatible

en .vimrcPara evitar que las teclas de flecha de la pantalla A, B, C, D en el modo de inserción.

Pero estoy usando vi Versión 4.0 (gritter) 25/12/06 .

¿Cómo puedo obtener el mismo comportamiento?

== EDITAR == (1)

Estoy usando la versión vi de Arch Linux, que está construida a partir de este repositorio CVS (última confirmación el 24 de febrero de 2007) con el siguiente comando:

make PREFIX=/usr LIBEXECDIR=/usr/lib/ex PRESERVEDIR=/var/lib/ex \
TERMLIB=ncurses FEATURES="-DCHDIR -DFASTTAG -DUCVISUAL -DMB -DBIT8"

y con estos tres parches: fix-tubesize-short-overflow.patch , navkeys.patch y preserve-dir.patch .

== EDITAR (2) ==

Los problemas ocurren en LXTerminal 0.2.0 , Termite 10-1 , Tilda 1.2.4-1 , Terminator 0.98-1 y xterm 320-2, pero no en urxvt v9.21 ni en las consolas virtuales de Linux.

== EDITAR (3) ==

De acuerdo con la Single Unix Specification flecha a la izquierda, flecha hacia abajo, haga flecha, flecha hacia arriba, respectivamente, corresponden a los siguientes capname: kcub1, kcud1, kcuf1y kcuu1. La comparación de las entradas terminfo de xtermy rxvt-unicode-256colorpara estos capterms da:

$ infocmp xterm rxvt-unicode-256color | grep -E 'kcuf1|kcub1|kcud1|kcuu1'

kcub1: '\EOD', '\E[D'.
kcud1: '\EOB', '\E[B'.
kcuf1: '\EOC', '\E[C'.
kcuu1: '\EOA', '\E[A'.

La modificación de la xterm terminfo entrada por substituing '\EOD', '\EOB', '\EOC', '\EOA' por '\E[D', '\E[B', '\E[C', '\E[A'debe resolver el problema, pero es una idea buena? ¿Quizás interrumpirá el uso de otras teclas de flecha de programas?

Ortomala Lokni
fuente
2
Creo que esto es causado por la interacción del terminal vi (m) <->, por lo que también puede probar algunas soluciones / configuraciones relacionadas con el terminal.
VanLaser
1
Traducción de lo que dijo @VanLaser arriba: su entrada para la corriente TERMen la termcapo terminfolas bases de datos está fuera de sincronía con los códigos producidos por el teclado. La solución no es cambiar el TERM, sino averiguar si su vienlace está relacionado con termcapo terminfo, encontrar los códigos de teclas emitidos por el teclado y corregir la base de datos correspondiente en consecuencia. Quejarse al administrador del sistema también podría funcionar.
Sato Katsura
1
¿Dije todo eso? A veces me sorprende :) (por supuesto, todo lo que sabía era que estaba relacionado con la terminal).
VanLaser
1
Esta versión de vi está construida con ncurses, luego debería usarse terminfo.
Ortomala Lokni
2
¿Viste estos consejos ? Quizás algo de ellos pueda ser útil.
Boris Serebrov

Respuestas:

2

Podría crear un alias que establezca su $TERMvariable

alias vi='TERM=rxvt-unicode-256color vi'

Agregue eso al archivo rc de su shell y se debe definir para cada terminal que inicie.

jecxjo
fuente
En mi sistema, esto solo hará que Vi deje el modo de inserción (que probablemente sea mejor que tener que imprimir basura, pero aún no soluciona el problema).
Martin Tournoij
1

A veces, este comportamiento puede ser el resultado de la configuración de asignaciones de teclas inusuales en su .vimrc- por ejemplo, si tiene algo que asigna dos ESCpulsaciones de teclas:

nmap <Esc><Esc> some_command_sequence

Entonces puede provocar un mal funcionamiento de vim con las teclas de flecha.

Pierz
fuente
La configuración descrita por el OP es bastante específica y muestra el comportamiento sin que dicha asignación esté en su lugar. (Lo he probado.)
Rico