Zsh
zsh 中的文本插入綁定
在 zsh 中,我如何綁定(比如說)
c-<cr>
插入&>/dev/null &<cr>
點?我使用 urxvt。
有兩個步驟:您需要讓終端仿真器為
Ctrl
+發出不同的轉義序列Return
,並且您需要告訴 zsh 在鍵入該轉義序列時要做什麼。終端中的應用程序接收字節序列,其中大部分要麼形成可列印字元,要麼是控製字元。大多數功能鍵和鍵弦都需要編碼為轉義序列,該轉義序列由轉義字元後跟一些編碼按下哪個鍵弦的字元組成。請參閱鍵盤輸入和文本輸出如何工作?了解更多背景資訊。
Ctrl
+沒有標準的轉義序列Return
,大多數終端,包括 (U)rxvt,只是發送一個 CR 字元,就像一個 plainReturn
。所以你需要告訴 Urxvt 發送一個不同的轉義序列。在您的 X 資源文件(~/.Xresources
–load it withxrdb -merge ~/.Xresources
)中,添加URxvt.keysym.C-Return: \033[27;5;13~
在 zsh 中,要將自定義程式碼綁定到一個鍵,將該程式碼編寫在一個函式中,並將該函式聲明為帶有
zle -N
. 在使用者定義的小元件中,變數BUFFER
包含正在編輯的行的內容,並CURSOR
包含游標位置。要在游標周圍插入文本,還有更方便的變數:您可以追加文本以LBUFFER
將其插入游標之前,或者將文本添加到將其RBUFFER
插入游標之後。我認為您想要做的是在行尾添加文本並執行目前命令。執行目前命令不是通過插入一個 CR 字元來完成的,它只會在命令中插入一個 CR。呼叫小元件
accept-line
(預設綁定到 CR)來執行命令。accept-line-run-in-background-with-output-hidden () { BUFFER+=" &>/dev/null &" zle accept-line } zle -N accept-line-run-in-background-with-output-hidden bindkey $'\033[27;5;13~' accept-line-run-in-background-with-output-hidden