Correggi i tasti freccia che visualizzano A, B, C, D in vi (non in vim)


16

So che in vim posso aggiungere

set nocompatible

in .vimrcmodo da evitare che i tasti freccia visualizzazione A, B, C, D in modalità di inserimento.

Ma sto usando vi versione 4.0 (smerigliatrice) 25/12/06 .

Come posso ottenere lo stesso comportamento?

== EDIT == (1)

Sto usando la versione vi di Arch Linux che è costruita da questo repository CVS (ultimo commit 24 febbraio 2007) con il seguente comando:

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

e con queste tre patch: fix-tubesize-short-overflow.patch , navkeys.patch e preserv-dir.patch .

== EDIT (2) ==

I problemi si verificano in LXTerminal 0.2.0 , Termite 10-1 , Tilda 1.2.4-1 , Terminator 0.98-1 e xterm 320-2 ma non in urxvt v9.21 né nelle console virtuali Linux.

== EDIT (3) ==

Secondo la Single Unix Specification freccia a sinistra, freccia giù, freccia destra, freccia SU corrispondono rispettivamente seguente capname: kcub1, kcud1, kcuf1e kcuu1. Confrontando le voci terminfo da xterme rxvt-unicode-256colorper questi capitoli si ottiene:

$ 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'.

Modifica del xterm terminfo ingresso di substituing '\EOD', '\EOB', '\EOC', '\EOA' da '\E[D', '\E[B', '\E[C', '\E[A'dovrebbe risolvere il problema, ma è una buona idea? Forse interromperà l'utilizzo di altri programmi con i tasti freccia?


2
Penso che ciò sia causato dall'interazione del terminale vi (m) <->, quindi puoi anche provare alcune soluzioni / configurazioni relative al terminale.
VanLaser,

1
Traduzione di ciò che @VanLaser ha detto sopra: la tua voce per la corrente TERMnel database termcapo non terminfoè sincronizzata con i codici prodotti dalla tastiera. La soluzione non è quella di cambiare il TERM, ma per scoprire se il tuo viè collegato contro termcapo terminfo, trovare i codici chiave emessi dalla tastiera e correggere il database corrispondente di conseguenza. Lamentarsi anche con l'amministratore di sistema potrebbe funzionare.
Sato Katsura,

1
Ho detto tutto questo? A volte mi stupisco :) (ovviamente, tutto quello che sapevo era che è collegato al terminale).
VanLaser,

1
Questa versione di vi è costruita con ncurses, quindi dovrebbe usare terminfo.
Ortomala Lokni,

2
Hai visto questi suggerimenti ? Forse qualcosa di loro può essere utile.
Boris Serebrov,

Risposte:


2

È possibile creare un alias che imposta la $TERMvariabile

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

Aggiungilo al file rc della tua shell e dovrebbe essere definito per ogni terminale che avvii.


Sul mio sistema questo farà semplicemente in modo che Vi lasci la modalità di inserimento (che è probabilmente meglio che stamparla come immondizia, ma non risolve ancora del tutto il problema).
Martin Tournoij,

1

A volte tale comportamento può derivare dall'impostazione insolita di mappature dei tasti nel tuo .vimrc- quindi ad esempio se hai qualcosa che mappa due ESCpressioni di tasti:

nmap <Esc><Esc> some_command_sequence

Quindi può portare a malfunzionamento di VIM con i tasti freccia.


La configurazione descritta dall'OP è piuttosto specifica e mostra il comportamento senza che sia presente una tale mappatura. (L'ho provato.)
Rich
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.