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
を押すと、jk
viコマンドモードに切り替わります。行の先頭に。
-を使用してモードに切り替えることもできますemacs
。Esce