zsh杀死Ctrl + Backspace,Ctrl + Delete


11

如何配置zsh以使Ctrl+ Backspace杀死点之前的单词?如何实现Ctrl+ Delete杀人点后?

我使用urxvt作为终端仿真器。


首先,您应该定义“单词”。只是字母字符吗?所有非空格字符?
Mikel

emacs术语中使用了类似的单词
学生,

如果以下解决方案均无效,请参考:stackoverflow.com/questions/21252419/…
AP。

Answers:


11

我先关注Ctrl+ Delete

删除整个单词的zsh命令称为kill-word。默认情况下,它绑定到Alt+ D

如何进行Ctrl+ Delete操作也取决于您使用的终端模拟器。

在我的系统上,这适用于xterm和Gnome Terminal:

bindkey -M emacs '^[[3;5~' kill-word

对于urxvt,您应该执行以下操作:

bindkey -M emacs '^[[3^' kill-word

如果那不起作用,请尝试输入Ctrl+ V Ctrl+ Delete以查看系统上的值。

您甚至可以将这两个都添加到您的中.zshrc,或者使用输出tput kDC5而不是对序列进行硬编码。

Ctrl+ Backspace似乎更难。

在我的系统上,按与按just相同Backspace

如果您的相同,我认为您最好的选择是使用Alt+ BackspaceCtrl+ W


我将urxvt用作终端仿真器
学生,

Ctrl + Backspace不起作用
学生

您需要^[[3^urxvt。 Ctrl+V Ctrl+Delete会告诉你这个。
Mikel

1
谢谢,我已经加入bindkey '^[[3^' kill-word bindkey'^H' backward-kill-word我的.zshrc。现在可以了!
学生

@ user5289:抱歉,我们彼此误会了。我认为^H^?不会为之工作Ctrl+Backspace。实际上,看来这种绑定是不可能的。 Alt+BackspaceCtrl+W可能是足够的替代品。
Mikel,

3

在urxvt上,对于向后删除部分,我只包含.zshrc以下内容:

bindkey '^H' backward-kill-word

它允许我使用ctrl + backspace删除上一个单词


2

我已经在我的.Xresources

URxvt.keysym.C-BackSpace:       \033[33~

而在我的.zshrc

bindkey -M main -M viins -M vicmd   '^[[33~'    backward-kill-word

这会杀死每个空格分隔的单词。请注意,'^ ['是转义字符。您必须xrdb -load .Xresources打开终端,然后^V^BackSpace


1

将以下内容添加到您的 ~/.zshrc

bindkey '^H' backward-kill-word
bindkey '5~' kill-word
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.