我想实现类似于vimc + a + w
或d + a + w
vim中的功能
在终端中,我们可以Ctrl + w
删除左侧和Alt + Backspace
右侧的单词但我找不到实现此功能的命令
答案1
如果您使用的 shell 将 readline(3) 用作 bash,则可以组合两个快捷方式:Alt-dAlt-Backspace
或者您定义了一个尚未使用的密钥,请参阅命令 command 的输出bind -sp
。后者已经在bash readline inputrc:将密钥绑定到多个命令序列。
答案2
zsh 的行编辑器在模式下支持所有开箱即用的vim
's [cd][ai][wW]
(甚至是额外的奖励) (使用类似于 tcsh 或类似 in 的方式输入)。[cd][ia]a
vi
bindkey -v
set -o vi
ksh
看info zsh 'Text Objects'
了解详情。
$ bindkey -M viopp
"^[" vi-cmd-mode
"^[OA" up-line
"^[OB" down-line
"^[[A" up-line
"^[[B" down-line
"aW" select-a-blank-word
"aa" select-a-shell-word
"aw" select-a-word
"iW" select-in-blank-word
"ia" select-in-shell-word
"iw" select-in-word
"j" down-line
"k" up-line
正如文档所述,您也可以在emacs
模式中绑定它们。喜欢:
bindkey '^W' select-a-word
尽管在模式下,您可能更喜欢以 emacs 的方式进行操作,并使用+ /emacs
按单词导航, 并使用+ / + ¹向前或向后删除单词,并且可能决定AltbfAltdCtrlw单词动态地与select-word-style
和公司。。
也可以看看zsh zle 移位选择在“stackoverflow”姊妹网站上进行导航和选择(包括逐字),就像 Microsoft Windows 一样,使用箭头键(如果您的键盘有)。
1 好吧,从技术上讲,这^W
并不emacs
像 - ,更像是终端线路学科中的那种。