如何將終端快捷鍵從 CTRL-M 對應到另一個組合

如何將終端快捷鍵從 CTRL-M 對應到另一個組合

我在另一篇文章中讀到,您可以在終端機中鍵入CtrlJCtrlM來代替按鍵,這很棒。Return但我想要做的是將其更改為另一種組合,例如:Ctrlspacebar.我嘗試過重新映射F1密鑰,但沒有成功。

這可能嗎?

答案1

取決於你到底想做什麼。

終端有兩種主要模式,這兩種模式都可以透過額外設定進行微調:

  1. 熟/規範模式。在該模式下,終端附帶一個內部行編輯器,其中^H(或^?)、、^W(^U@)、^V(或\) 字元可用於編輯行。在^J接收到字元之前,不會向從終端設備讀取資料的應用程式發送任何內容。
  2. 生的模式。每個字元都可用於在輸入後立即或在延遲後或在輸入了這麼多字元後讀取終端設備的應用程序,具體取決於時間分分鐘參數,但無論如何,不是使用內部行編輯器。

在這兩種情況下,^M(CR) 字元都可以自動轉換為^J(LF)(或對於那些在按 Enter 時同時發送 CR 和 LF 的終端來說被忽略)。

第一種模式是終端的預設模式。第二種模式由zshbashvi想要控制行編輯的應用程式使用。

在第一種模式中,您無法變更用於接受該行的字元。

但是您可以告訴您的終端^J在按這個或那個鍵時發送字元。例如,透過xterm,您可以使用translationsX11 資源來變更鍵映射並告訴它在按下給定按鍵時發送您想要的任何內容。如果您的終端不支援重新映射鍵盤,您仍然可以使用 GNUscreen來為您進行翻譯。例如,如果您的終端^[OP在按 時發送字元序列F1,您可以新增

bindkey \033OP "\012"

告訴你~/screenrc當你按下時發送 LFF1

對於第二種情況,即應用程式控制輸入,您仍然可以使用與上面相同的方法,但您也可以配置每個單獨的應用程式來執行此操作,以及當您按F1

例如,對於zsh,LF 字元綁定到accept-line zsh小部件。你可以這樣做:

bindkey "^[OA" accept-line

綁定F1到同一個小部件。

請注意,Ctrl+Space通常會傳送 NUL 字符,您可以將其稱為\0^@

相關內容