vim
通常、デスクトップセッションで実行する場合は、矢印キーが挿入モードでは機能しないため、konsole
TERM変数がに設定されていることを確認してください。カーソルを移動する代わりに、大文字のA..Dを表示します。linux
TERM=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
、 と の機能を見ると、次のような内容を見ることができます。xterm
konsole
linux
$ 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
\eOA
Up
今\eOA
、挿入モードになっているとき、vimは何をしますか?\e
(ESC)を押して挿入モードを終了し、コマンドモードに戻ります.O
新しい行を開き、挿入モードに戻り、文字をA
挿入しますA
。
一方\e[A
、\e
(ESC)は挿入モードを終了し、未知[A
の組み合わせ(invim
は[
プレフィックスで、後に常に他の文字が続く)なので、何もしません。
したがって、やるべきことは、そのままにして$TERM
viが互換性がある場合は、挿入モードで矢印キーを使用しないか、挿入モードで矢印キーを使用できるset nocp
ようにすることです。~/.vimrc
答え2
この問題を解決する簡単な方法は次のとおりです。
echo "set nocp" > ~/.vimrc
この問題を解決する必要があります :)