Bashのviモードを「通常」Viモード(「挿入」ではない)にデフォルト設定し、KornShellを模倣して行の先頭にカーソルを置きます。

Bashのviモードを「通常」Viモード(「挿入」ではない)にデフォルト設定し、KornShellを模倣して行の先頭にカーソルを置きます。

ksh私はシェルがViコマンドライン編集モードにあるときにBashがKornShell93()の動作を模倣するようにします。

KornShellはデフォルトで「Vi通常モード」(別名「コマンド」モード)に設定されており、コマンドライン履歴を後ろに移動するときにコマンドラインの先頭にカーソルを置きます。これは、「Vi挿入モード」とコマンドラインの末尾にあるBashとは対照的です。

「に応じてBash vi モード設定はデフォルトでコマンドモードに設定されます。「これは、Viコマンドライン編集が有効な場合、Bashを「Viノーマルモード」にデフォルト値に設定する方法がないと結論付けます。

5年以上のことですが、それ以来状況が変わったのかと思います。

コマンドラインの先頭にカーソルを自動的に配置するのはどうですか?この問題を解決するのに役立つ私が知らないReadline魔法はありますか?

shells/bash私は現在、OpenBSD(2017年1月)のソース(OpenBSDポート)でコンパイルされたBashバージョン4.4.5(1)リリースを使用しています。

ベストアンサー1

コマンドラインにEscを挿入する方法が不足しているようです。

vi-insertほとんどのキーalpha/numericに使用されますが。 Escは遠く離れており、Alt-j(valid)のようなコードは予想よりも複雑に見えます.だから作る方法があります。二つキーは設定可能な文字列に変換されます。

回避策は次のように動作します。この回答

次の項目に追加してください.inputrc

 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 emacs
 "\ee": vi-editing-mode
 "jk": "\eejk"
 "kj": "\eejk"

 set keymap vi-insert
 "\ee": emacs-editing-mode
 "jk": vi-movement-mode
 "kj": vi-movement-mode

 set keymap vi-command
 "\ee": emacs-editing-mode

これにより、どこから始めても、またはemacs両方viを押すと、jkviコマンドモードに切り替わります。行の先頭に

-を使用してモードに切り替えることもできますemacsEsce

おすすめ記事