Bash
使 Bash 的 vi 模式預設為“普通”Vi 模式(不是“插入”),並將游標放在行首,模仿 KornShell
ksh
當 shell 處於 Vi 命令行編輯模式時,我試圖讓 Bash 模仿 KornShell93 ( ) 的行為。KornShell 預設為“Vi 普通模式”(又名“命令”模式),並且在向後瀏覽命令行歷史記錄時,它還會將游標置於命令行的最開始處。這與 Bash 形成對比,後者將您置於“Vi 插入模式”並位於命令行的末尾。
在“ Bash vi 模式配置預設為命令模式”的答案中,幾乎可以得出結論,當啟用 Vi 命令行編輯時,沒有辦法讓 Bash 預設為“Vi 普通模式”。
這已經是五年多以前的事了,我想知道從那以後情況是否發生了變化?
那麼自動將游標放在命令行的開頭呢?是否有一些我不知道的 Readline 魔法可以幫助我解決這個問題?
我
shells/bash
在 OpenBSD-current(2017 年 1 月)上使用從原始碼(OpenBSD 埠)編譯的 Bash 版本 4.4.5(1)-release。
似乎沒有足夠的方法在命令行中插入 Esc。
雖然在
vi-insert
大多數alpha/numeric
情況下都使用了鍵。Esc 距離很遠,任何和弦(如Alt-j
(有效))似乎都比預期的複雜。因此,有一種方法可以將兩個鍵轉換為可配置的字元串。解決方法通過使用此答案中的想法來工作
只需將其添加到
.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-command 模式的行首。此外,它還允許您使用-切換到
emacs
模式。Esc``e