我注意到在Bash的vi模式下(即使用“set -o vi”启用的模式),一些命令(如“diw”)在Vim中有效,但在vi中无效,在Bash命令行上也是如此。有没有一种简单的方法来配置Bash,使其键绑定支持Vim命令?
我希望能够在命令行上输入Vim命令,而不必实际启动Vim程序,就像this question中描述的那样。
我注意到在Bash的vi模式下(即使用“set -o vi”启用的模式),一些命令(如“diw”)在Vim中有效,但在vi中无效,在Bash命令行上也是如此。有没有一种简单的方法来配置Bash,使其键绑定支持Vim命令?
我希望能够在命令行上输入Vim命令,而不必实际启动Vim程序,就像this question中描述的那样。
set -o vi
获取的“vi模式”并不是vi本身。它是内置在readline中的vi行为的不完整近似版本,而bash在底层使用此命令行编辑库。<C-x><C-e>
话虽如此,$ man readline
告诉你一切你需要自定义它的行为和添加绑定的内容。
vi
模式下,那么 <C-x><C-e>
的等价操作是按下 ESC
键然后再按下 v
键。 - Mark Reed通过将以下内容添加到您的~/.inputrc文件中,可以将vi命令模式diw
应用于任何使用readline的软件(如Bash):
教授vi命令模式diw
set keymap vi-command
"diw": "bde"
.bashrc
:# at the start of your .bashrc file
[[ $- == *i* ]] && source /usr/share/blesh/ble.sh --noattach
...
#for vim-style mode
set -o vi
...
#at the end of your .bashrc file
[[ ${BLE_VERSION-} ]] && ble-attach
或者你可以这样做:
# at the start of your .bashrc file
source /usr/share/blesh/ble.sh
但这可能不会按预期工作 - 阅读此内容。
bash
不支持vi
或vim
命令,而是使用类似于vi
键绑定的键绑定来控制其自己的命令集。 - chepner