Viモードのbashが挿入モードに切り替えられたとき、使用モード(コマンドまたは編集)についてのヒントが得られないため、常に少し混乱しています。改造を区別する方法はありますか?カーソルの色の自動変更などでしょうか?
/ etc/inputrc(または〜/ .inputrc)に次を追加します:
set show-mode-in-Prompt on
これにより、プロンプトの前に + 挿入モードのとき : bash 4.3のコマンドモード中
編集:最新バージョンのbash 4.4では、代わりにデフォルトで「(ins)」または「(cmd)」が前に付いたプロンプトが表示されます。ただし、次のように変更できます。
set vi-ins-mode-string "+"
set vi-cmd-mode-string ":"
また、 '\ e [1; 31m'のようなカラーコードを使用できますが、それらを '\ 1'および '\ 2'で囲んで、readlineを幸せに保つことができます。
set vi-cmd-mode-string "\1\e[1;31m\2:\1\e[0m\2"
@Isaac Hansonの回答に基づいて、.inputrc
でこれらを設定することにより、(VIMの場合と同様に)カーソルスタイルを設定してモードを反映できます。
set editing-mode vi
set show-mode-in-Prompt on
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2
# optionally:
# switch to block cursor before executing a command
set keymap vi-insert
RETURN: "\e\n"
これにより、挿入モードのビームカーソルまたは通常モードのブロックカーソルが表示されます。
その他のオプション(\e[
の後の数字を置き換えます):
Ps = 0 -> blinking block.
Ps = 1 -> blinking block (default).
Ps = 2 -> steady block.
Ps = 3 -> blinking underline.
Ps = 4 -> steady underline.
Ps = 5 -> blinking bar (xterm).
Ps = 6 -> steady bar (xterm).
端末がDECSCURSRをサポートしている必要があります(xterm、urxvt、iTerm2など)。 TMUXはこれらもサポートします(tmuxの外部でTERM=xterm-256color
を設定した場合)。
Korn Shellでviモードを何年も使用した後、基本的に、コマンドを入力する前にESC
を数回タップし、ESC
次にi
をタップして入力を開始するように訓練しました。
基本的な前提は、ESC
を押すだけで、どのモードにいるかが正確にわかるということです。