viで(vimではなく)A、B、C、Dを表示する矢印キーを修正


16

私はvimに私が追加できることを知っています

set nocompatible

.vimrc矢印キーが挿入モードではA、B、C、Dを表示することを回避します。

しかし、私はvi バージョン4.0(グリッター)12/25/06を使用しています。

同じ動作を取得するにはどうすればよいですか?

==編集==(1)

私が使用しているアーチのLinuxからviのバージョンこのことから構築されているCVSリポジトリを次のコマンドで(前回2007年2月24日をコミット):

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

そして、これらの3つのパッチ:fix-tubesize-short-overflow.patchnavkeys.patchおよびpreserve-dir.patch

==編集(2)==

この問題は、LXTerminal 0.2.0Termite 10-1Tilda 1.2.4-1Terminator 0.98-1xterm 320-2で発生しますが、urxvt v9.21でもLinux仮想コンソールでも発生しません。

==編集(3)==

よると、単一のUNIX仕様左矢印、それぞれ以下のcapnameに対応して上向き矢印、右矢印、下矢印、: 、、kcub1 と。これらのcapterms からのterminfoエントリを比較すると、以下が得られます。kcud1kcuf1kcuu1xtermrxvt-unicode-256color

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

substituingによってエントリのterminfoのxtermを変更'\EOD''\EOB''\EOC''\EOA''\E[D''\E[B''\E[C''\E[A'問題を解決するが、それは良い考えである必要がありますか?たぶんそれは他のプログラムの矢印キーの使用を壊しますか?


2
これはvi(m)<->端末の相互作用が原因だと思うので、端末関連の回避策/設定を試すこともできます。
VanLaser

1
@VanLaserは、上記の言ったことの翻訳:現在のあなたのためのエントリTERMtermcapまたはterminfoデータベースは、キーボードで生成コードと同期から外れています。解決策は、を変更するのTERMではなく、またはviに対してリンクされているかどうかを確認し、キーボードから出力されるキーコードを見つけて、それに応じて対応するデータベースを修正することです。システム管理者への苦情もうまくいくかもしれません。termcapterminfo
佐藤桂

1
全部言った?時々私は自分自身を驚かせます:)(もちろん、端末に関連しているということだけは知っていました)。
ヴァンレーザー

1
このバージョンのviはncursesで構築されているため、を使用する必要がありますterminfo
Ortomala Lokni

2
これらのヒントを見ましたか?たぶんそれらの何かが役に立つかもしれません。
ボリスセレブロフ

回答:


2

あなたの設定エイリアス作成することができます$TERM変数を

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

それをシェルのrcファイルに追加すると、起動するすべての端末に対して定義されます。


私のシステムでは、これによりViは挿入モードのままになります(ガベージを出力するよりはおそらく優れていますが、それでも問題はまったく解決しません)。
マーティントゥルノイ

1

時々、そのような振る舞いは、あなたの異常なキーマッピングのセットアップに起因する可能性があります.vimrc-たとえば、2つのESCキー押下をマップする何かがある場合:

nmap <Esc><Esc> some_command_sequence

その後、矢印キーでvimが誤動作する可能性があります。


OPによって記述される構成は非常に具体的であり、そのようなマッピングが適切に行われない場合の動作を表示します。(私はそれをテストしました。)
リッチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.