Bash Viモードでは、キーを押すと自動的に挿入モードに入ります。

Bash Viモードでは、キーを押すと自動的に挿入モードに入ります。

私はXFCE4端末でbashシェルを使用しています。 Viモードでシェルを設定しました。

~/.bashrc ファイルに次の行を追加してこれを行いました。

set -o vi

通常モードのシェルで最初に押す文字は通常モードで入力されますが、その後は挿入モードに入ります。

つまり:

私は通常モードです。 b を押すと、1 ワード後に挿入モードに入ります。

bbを押すと、1単語後ろに挿入モードに入り、b文字を挿入します。

別の例として、ddを押すと、第1のdが通常モードに取り込まれ、第2のdが挿入される挿入モードに切り替わる。

set -o vi.bashrcにあるかどうかにかかわらず、シェルに手動で入ると、この動作は発生せず、通常の動作が表示されます。私はEmacsモードではないので、私の.bashrcの変更を読んでいることを知っています。

私はbash 4.2.45(1)リリースを使用しています。

これは私の.bashrcの完全な内容です。

  PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
  PATH=$PATH:/home/bleakcabal/.rvm/gems/ruby-2.0.0-p247/bin
  set -o vi

答え1

@Patrickのコメントを読んだ後、問題を解決しました。

説明する動作はemacsモードです。

これは私がviモードではないことに気づきました。私も入れて

set -o vi

私は.bash_profileと入力しましたが、今はすべてうまくいきます。私が読んだことによれば、.bash_profileはログインシェル用で、.bashrcは対話型の非ログインシェル用なので、私の場合だと思うので、これは奇妙です。

答え2

問題はまだemacsモードにあることです。しかし、より良いアプローチはファイルを変更することです.inputrc.bashrcこれにより、GNU readlineを使用するすべてがシェルと一致します(そしてbash以外の他のシェルでも機能します)。

私は次の私.inputrc。キーはホーム行にあるため、手を伸ばすよりもタッチがはるかに簡単で、テキストでは「jk」はまれな組み合わせです。jkesc

# Make GNU readline (including bash) use vi-mode
 
set editing-mode vi
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2
 
set keymap vi-insert
"jk": vi-movement-mode

関連情報