Behebung der Pfeiltasten für A, B, C, D in vi (nicht in vim)


16

Ich weiß, dass ich in vim hinzufügen kann

set nocompatible

um .vimrczu vermeiden, dass die Pfeiltasten im Einfügemodus A, B, C, D anzeigen.

Aber ich benutze vi Version 4.0 (Gritter) 25.12.06 .

Wie kann ich dasselbe Verhalten erzielen?

== EDIT == (1)

Ich verwende die vi-Version von Arch Linux, die aus diesem CVS-Repository (letztes Commit am 24. Februar 2007) erstellt wurde, mit dem folgenden Befehl:

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

und mit diesen drei Patches: fix-tubesize-short-overflow.patch , navkeys.patch und preserve-dir.patch .

== EDIT (2) ==

Die Probleme treten in LXTerminal 0.2.0 , Termite 10-1 , Tilda 1.2.4-1 , Terminator 0.98-1 und xterm 320-2 auf, jedoch nicht in urxvt v9.21 oder in den virtuellen Linux-Konsolen.

== EDIT (3) ==

Nach der Single Unix Specification Pfeil nach links, Pfeil nach unten, Pfeil nach rechts, Pfeil nach oben , entsprechen jeweils den folgenden capname: kcub1, kcud1, kcuf1und kcuu1. Der Vergleich der Terminfoeingaben von xtermund rxvt-unicode-256colorfür diese Kaptermen ergibt:

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

Ändern des xterm term Eintrag von substituing '\EOD', '\EOB', '\EOC', '\EOA' von '\E[D', '\E[B', '\E[C', '\E[A'das Problem lösen sollte , aber es ist eine gute Idee? Vielleicht wird es die Verwendung der Pfeiltasten anderer Programme stören?


2
Ich denke, dies wird durch die Interaktion von vi (m) <-> mit dem Terminal verursacht, daher können Sie auch einige Workarounds / Konfigurationen für das Terminal ausprobieren.
VanLaser

1
Übersetzung von @VanLaser: Ihr Eintrag für den aktuellen Inhalt TERMder termcapoder terminfo-Datenbank stimmt nicht mit den von der Tastatur erzeugten Codes überein . Die Lösung besteht nicht darin, die zu ändern TERM, sondern herauszufinden, ob Ihre Seite vimit termcapoder verknüpft terminfoist, die von der Tastatur ausgegebenen Schlüsselcodes zu finden und die entsprechende Datenbank entsprechend zu korrigieren. Sich beim Sysadmin zu beschweren könnte auch funktionieren.
Sato Katsura

1
Habe ich das alles gesagt? Manchmal staune ich selbst :) (natürlich wusste ich nur, dass es sich um ein Terminal handelt).
VanLaser

1
Diese Version von vi wurde mit ncurses erstellt und sollte dann verwendet werden terminfo.
Ortomala Lokni

2
Hast du diese Tipps gesehen ? Vielleicht kann etwas von ihnen nützlich sein.
Boris Serebrov

Antworten:


2

Sie können einen Alias ​​erstellen, der Ihre $TERMVariable festlegt

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

Fügen Sie das zur rc-Datei Ihrer Shell hinzu, und es sollte für jedes Terminal definiert werden, das Sie starten.


Auf meinem System verlässt Vi damit nur den Einfügemodus (was wahrscheinlich besser ist, als dass er Müll druckt, aber das Problem noch nicht ganz behebt).
Martin Tournoij

1

Manchmal kann ein solches Verhalten auf ungewöhnliche Tastenzuordnungen zurückzuführen sein .vimrc, z. B. wenn Sie zwei ESCTastendrücke zugeordnet haben:

nmap <Esc><Esc> some_command_sequence

Dann kann es zu Fehlfunktionen mit den Pfeiltasten kommen.


Die vom OP beschriebene Konfiguration ist sehr spezifisch und zeigt das Verhalten an, ohne dass ein solches Mapping vorhanden ist. (Ich habe es getestet.)
Rich
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.