Bash 'のviモードをデフォルトで“通常の” Viモードにします( insert ”)、KornShell

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

KornShellデフォルトは「Vi通常モード」(別名「コマンド」モード)で、コマンドライン履歴を逆方向に移動するときにコマンドラインの先頭にカーソルを置きます。これは、「Vi」に移動するBashとは対照的です。挿入モード」とコマンドラインの最後。

Bashviモード構成をデフォルトのコマンドモードにする」への回答、Viコマンドライン編集が有効になっている場合、Bashをデフォルトで「Vi通常モード」にする方法はないとほぼ結論付けられました。

これは5年以上でしたs前になりましたが、それ以降、これは変更されたのでしょうか?

そして、コマンドラインの先頭にカーソルを自動的に配置するのはどうでしょうか。これに役立つ未知のReadlineマジックがありますか?

ソースからコンパイルされたBashバージョン4.4.5(1)-リリース(OpenBSD shells/bashポート)OpenBSD-current(2017年1月)。

コメント

  • データポイントとして、ZshはBash ^ H ^のように動作します。 Kshとは異なり、H ^ H ^ HReadline。(Bash 'の動作は実際にはBash '

s、it ' s Readline ' s、Bashが使用します。)

回答

コマンドラインにEscを挿入する適切な方法がないようです。

ほとんどのalpha/numericキーが使用されます。Escはかなり遠くにあり、任意のコード(Alt-jなど)(これは機能します))必要以上に複雑に見えるので、 2つのキーをconfiguに変換する方法がありますrablestring。

回避策は、この回答

 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コマンドモードになります。行の先頭

さらに、 Escを使用してemacsモードに切り替えることができます。 e

コメント

  • できます'これを十分に賛成してください! emacsのものを取り除き、" jk "ショートカットだけが必要です。' " kj "は必要ないので、次のようにします。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そして今私は幸せです!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です