在终端中,当光标位于单词内时如何删除该单词?

在终端中,当光标位于单词内时如何删除该单词?

我想实现类似于vimc + a + wd + a + wvim中的功能

在终端中,我们可以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]avibindkey -vset -o viksh

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像 - ,更像是终端线路学科中的那种。

相关内容