Keyboard-Shortcuts

如何為 GNU-screen 搜尋合適的“命令字元”?

  • November 26, 2015

我很難為 GNU-screen 找到一個不與我已經使用的某些組合鍵衝突的“命令字元”。

通過 Emacs(和 org-mode,以及我的正常 shell 等),幾乎所有由Ctrl+組成的命令字元[A-Z] 都是 off-limits

我認為,如果有一種簡單且一致的方法來鍵入 ASCII 範圍 27 到 31 中的任何一個字元,那可能會奏效。

是否有任何工具可以用來找到一種方法來鍵入符合上述標準的這些字元之一?

(順便說一句,“一致”是指它可以在“所有鍵盤”中以相同的方式輸入,或者至少在“所有美國鍵盤”中。)

您可以使用 Screen 辨識為轉義字元的任何功能鍵。將轉義字元(更準確地說,轉義字節)設置為您從不輸入的字元,例如\377UTF-8 從不使用的字元。command例如,將要用作轉義鍵的鍵綁定到F12F2在 termcap 中使用 - 請參閱螢幕手冊中的“輸入翻譯”部分):

escape \377\377
bindkey -k F2 command

您不僅限於 Screen 知道符號名稱的鍵。要將任意鍵或鍵弦設置為命令鍵(該鍵確實需要在終端中發送轉義序列),請通過在 shell 提示符下按Ctrl+然後按該鍵來找出它發送的轉義序列。V這會導致轉義序列按字面意思插入,而不是被 shell 辨識為轉義序列。例如,如果你想使用F12,你可以按Ctrl+ Vthen F12,它會插入^[[24~(第一個^[代表轉義字元)(某些終端可能會發送不同的轉義序列);那麼你會使用

bindkey ^[[24~ command

我使用Ctrl+\作為我的螢幕轉義鍵 ( escape ^\\\),並讓Ctrl+\ \注入一個^\字元。很少有程序使用^\控製字元。在 Emacs 中,它呼叫toggle-input-method,我不使用它;你的旅費可能會改變。在熟終端中,它發送 SIGQUIT,這很少有用(當需要時,Ctrl+Z後跟kill命令通常也可以工作;我預設禁用核心轉儲)。Ctrl+在某些需要的\鍵盤佈局上可能難以鍵入,但在美國佈局上它很簡單。我還將終端仿真器配置為在我按下+時發送字元,這樣我也可以用左手輸入字元。```AltGr^\Ctrl````

Ctrl+ ](Emacs: abort-recursive-edit) 和Ctrl+ ^(Emacs: undefined; 但在美式鍵盤和許多其他佈局上打字很尷尬) 是 Emacs 使用者的其他可能候選者。


順便說一句,如果你只使用 Screen 來執行 Emacs 和一些 shell,你就不需要 Screen。Emacs 可以扮演同樣的角色。保持單個 Emacs 程序執行,並用於emacsclient從任何終端打開此 Emacs 程序的視窗。如果終端消失,您可以emacsclient再次執行以連接到同一個 Emacs 實例。您可以將任意數量的實例emacsclient連接到同一個 Emacs 實例,可能通過不同的本地和遠端連接顯示。

要在沒有界面的情況下啟動 Emacs,請執行emacs --daemon. 然後執行emacsclient -c以打開現有 Emacs 實例的視窗(或emacsclient -c -nw強製文本模式視窗)。如果您想在 Emacs 尚未啟動的情況下啟動它,但連接到現有的 Emacs 實例(如果有的話),請執行emacsclient -a '' -c.

如果要執行shell,可以在Emacs裡面使用M-x shellor之類的。M-x termEmacs 幾乎可以完成 Screen 可以做的所有事情。

引用自:https://unix.stackexchange.com/questions/244440