TERM = (linux | xterm) viまたはxtermのAAABBBBBBCCDDDの問題

TERM = (linux | xterm) viまたはxtermのAAABBBBBBCCDDDの問題

vim通常、デスクトップセッションで実行する場合は、矢印キーが挿入モードでは機能しないため、konsoleTERM変数がに設定されていることを確認してください。カーソルを移動する代わりに、大文字のA..Dを表示します。linuxTERM=xterm

今私はこれが仕事をする間違った方法、konsoleつまりxterm実際にはxterm

vi/下で矢印キーを操作するより良い方法はありますかvim

オペレーティングシステム:Kubuntu 13.04(新規インストール)

答え1

何が起きているのか分かると思います。

互換モードをvim無効にするように設定していません。vi

では、vi矢印キーだけを押すことができます。注文するモデル。挿入モードでは、矢印キーを押すと送信される一連の文字が個別に入力された文字として扱われます。

ここで、起動時にvi端末を次に設定します。キーボード転送モード(kx).このモードでは、端末は通常、矢印キーを押す場合と矢印キーを押さない場合に別の文字シーケンスを送信します。

たとえば、キーはkxモードUpと非kxモードで送信されます。\eOA\e[A

smkx端末をkxモードに設定するには、terminfoデータベースで(設定モードキーボード転送)機能を見つけて現在の値を取得します$TERM

smkx、 と の機能を見ると、次のような内容を見ることができます。xtermkonsolelinux

$ infocmp -1 linux | grep smkx
$ infocmp -1 xterm | grep smkx
    smkx=\E[?1h\E=,
$ infocmp -1 konsole | grep smkx
    smkx=\E[?1h\E=,

smkx項目に定義がありませんlinux

これは、vimのvim起動時に端末をkxモードに設定しないことを意味します。つまり、キーを押すのではなくTERM=linux転送を意味します。\e[A\eOAUp

\eOA、挿入モードになっているとき、vimは何をしますか?\e(ESC)を押して挿入モードを終了し、コマンドモードに戻ります.O新しい行を開き、挿入モードに戻り、文字をA挿入しますA

一方\e[A\e(ESC)は挿入モードを終了し、未知[Aの組み合わせ(invim[プレフィックスで、後に常に他の文字が続く)なので、何もしません。

したがって、やるべきことは、そのままにして$TERMviが互換性がある場合は、挿入モードで矢印キーを使用しないか、挿入モードで矢印キーを使用できるset nocpようにすることです。~/.vimrc

答え2

この問題を解決する簡単な方法は次のとおりです。

echo "set nocp" > ~/.vimrc

この問題を解決する必要があります :)

関連情報