如何在命令行中删除一个区域?

如何在命令行中删除一个区域?

我只是学到了命令行有标记,就像 emacs 一样。但是,与 emacs 不同的是, C-w它不会删除该区域,而只会向后删除一个单词。有readline等效的吗?

答案1

在 readline 和 zsh 中,这kill-region与 emacs 或 tcsh 中的小部件相同,但默认情况下不绑定,因为与 tcsh 相反,它们都选择^Wwerasetty 设备线路规则对齐。

请参阅zsh 中info bash kill-region的 bash/readline 。info zsh kill-region

要将其绑定到^W, 在 zsh 中(就像在 tcsh 中一样):

bindkey '^W' kill-region

在 zsh 中(就像在 tcsh 中一样)。

在 bash 中,您首先需要配置行规则以使用不同的字符werase或禁用werasealtoger(但随后您将无法从 tty 自己的行编辑器中删除单词):

stty werase '^O'
# or:
stty werase '' # disable
bind '"\C-w": kill-region'

或添加"\C-w": kill-region到您的~/.inputrc以影响所有使用 readline 的应用程序。这也有同样的限制;werase必须在 readline 初始化之前更改为其他内容,因此对于 bash,在 bash 启动之前。

相关内容