如何將’backward-kill-line’鍵綁定到Ctrl + Shift + Backspace?
我已經使用zsh kill Ctrl + Backspace, Ctrl + Delete的答案來配置以下鍵綁定:
Ctrl
+Backspace
:刪除直到目前單詞的開頭,Ctrl
+Delete
:刪除直到目前單詞的結尾,Ctrl
+Shift
+Delete
: 刪除直到行尾。這已使用以下命令完成:
$ bindkey -M emacs '^[[3;5~' kill-word $ bindkey -M emacs '^H' backward-kill-word $ bindkey -M emacs '^[[3;6~' kill-line
要知道如何對密鑰(即
^[[3;5~
部分)進行編碼,我使用了答案中詳述的“技巧”:“ typeCtrl
++ to see what the value on your system”C
Ctrl``Delete
。問題
我想將
Ctrl
++綁定到命令(即刪除游標和行首之間的所有內容)Shift
。Backspace``backward-kill-line
但是,當我鍵入
Ctrl
+C
Ctrl
+Shift
+時Backspace
,我的提示只顯示- 即與+^H
相同的組合鍵。Ctrl``Backspace
您的終端為
Ctrl
+發送與Shift
+相同的轉義序列,因此 zsh 無法區分兩者。唯一的解決方案是配置您的終端以發送不同的轉義序列。並非所有終端都允許這樣做。Backspace``Ctrl``Backspace
一些終端,例如 xterm、rxvt、iTerm2 和 Emacs term,允許您手動為每個鍵弦配置轉義序列。請查閱終端的文件。
例如,對於 xterm,您可以將下面的程式碼段放在您的
.Xresources
. 載入它xrdb -merge ~/.Xresources
。許多環境會在您登錄時載入它;如果您沒有,請將此命令添加到您的 X11 啟動文件中。XTerm.VT100.translations: #override \ Ctrl Shift <Key>BackSpace: string("\033[27;6;8~") \n
然後你可以使用這個轉義序列¹:
bindkey -M emacs '^[[27;6;8~' backward-kill-word
使用基於vte的終端,包括 Gnome-terminal、Guake 和 Terminator,你就不走運了。他們沒有任何方法來配置鍵綁定。不過,他們可能願意為特定密鑰添加臨時支持。
¹我選擇這個序列是為了與xterm 的模式兼容。我通常建議啟用,這主要是向後兼容的,但是您想要的特定鍵和弦僅在第 2 級啟用,這很難應付(例如 Ctrl+字母不發送相應的控製字元)。
modifyOtherKeys
modifyOtherKeys