3

私は vim が大好きで、vi-mode を使用して bash のエクスペリエンスを向上させたいと思っています。ただし、私が emacs の動作に慣れていることの 1 つは、カーソルを上下に移動してシェル履歴を参照すると、カーソルが行末に配置されることです。

vi モードでは逆です。カーソルは常に行頭に配置されます。emacsモードでbashを長時間使用していたので、最後にカーソルが表示されることを期待するのは本当に頭に焼き付いています。

シェルの履歴を参照するときに、デフォルトで bash vi モードの行末にカーソル位置を取得する可能性はありますか?

4

2 に答える 2

6

上カーソルと下カーソルを再マップする必要があります。

bind -m vi-command '"\201": previous-history'
bind -m vi-command '"\202": next-history'
bind -m vi-command '"\203": end-of-line'
bind -m vi-command '"\e[A": "\201\203"'
bind -m vi-command '"\e[B": "\202\203"'

これにより、前の履歴、次の履歴、および行末が存在しないキーにマップされ、次にそれらの文字のシーケンスに上下にマップされます。必要に応じてj/kでも同じことができますが、そのままにしておくことをお勧めします。そうすれば、両方を行うことができます。

これは、コマンドモードのときにのみキーを再マップします。私のマシンでは、カーソルはすでに挿入モードの行の終わりにあります。これが当てはまらない場合は、キーマップとしてvi-commandの代わりにvi-insertを使用して同じことを行うことができます。

于 2009-05-13T10:01:26.217 に答える
5

内部の履歴コードを再コーディングする以外に、これを行う方法がわかりませんbash(またはreadline、実際には)。

しかし、最後に追加を開始する行を見つけたら、入力するのは本当に難しいですか?Shift-A

もしあなたが emacs モードを捨てようとしているなら、ある時点で、あなたはそれを完全にやり、viやり方を受け入れる必要があるでしょう。私たちに参加してください、あなたはあなたがしたいことを知っています:-)

于 2009-05-10T07:44:59.893 に答える