2009-10-09 53 views
20

在GNU屏幕上,我想更改默認命令綁定到Alt-s(通過調整.screenrc)而不是默認的Ca,原因是我使用emacs因此GNU屏幕綁定了Ca鍵,發送「Ca」到emacs變得單調乏味(正如@Nils所說,發送「Ca」我應該輸入「Ca a」)以及bash shell中的「Ca」,並且我可以將轉義更改爲C-,但其中一些已映射到emacs和其他組合並不像ALT-S那麼容易。如果有人已經完成了ALT鍵映射,請讓我知道。gnu screen - 將默認轉義命令鍵更改爲ALT-X?

回答

1

不回答你的問題,但C-a確實將C-a發送到窗口,不是嗎?

+1

它確實對emacs用戶來說不太方便。 – rampion 2009-10-09 12:31:56

+0

C-a做到了。但問題是我不能在屏幕上運行的emacs中使用C-a綁定。希望你得到它 – Siva 2009-10-09 12:33:59

+1

@rampion:明白了,但問題是「我不能在emacs中使用C-a」,我相信這是錯誤的。 @Siva:嗯。實際上,不。按「C-a a」可以將C-a發送給emacs。它不方便,是的 - 但可能的。 – Nils 2009-10-09 12:44:18

9

從我的man screen讀書好像是唯一的元字符screen可以使用命令綁定CTRL

escape xy 

    Set the command character to x and the character generating a literal 
    command character (by triggering the "meta" command) to y (similar to 
    the -e option). Each argument is either a single character, a two-character 
    sequence of the form "^x" (meaning "C-x"), a backslash followed by an octal 
    number (specifying the ASCII code of the character), or a backslash followed 
    by a second character, such as "\^" or "\\". The default is "^Aa". 

如果有一些你不使用emacs的映射,即使這很不方便,如C-|,那麼你可以使用你的終端輸入管理器重新映射ALT-X,讓你使用​​綁定。這將是一個有點hackish,但。

+0

謝謝。這有點棘手,也許可以有一個直接的方式來做到這一點 – Siva 2009-10-09 12:35:57

+3

你不必在控制檯前面加上轉義鍵。我使用「escape」〜「,它將它設置爲反向(無控制)。不過,我認爲你不能使用Alt-anything。 – silentbicycle 2009-10-09 12:46:44

+0

@silentbicyle謝謝。是的,我知道我不必與控制序言,「逃生〜」不適合我。當我必須真正運行在shell中的任何程序時,我會變得乏味,這就是我更喜歡CTL/ALT映射的原因。 – Siva 2009-10-09 13:07:00

6

屏幕沒有任何alt綁定的簡寫語法,但您可以直接給它八進制代碼。比如我的機器上,按住Alt鍵x的十六進制代碼F8,或370八進制,所以把

逃逸\ 370x

我screenrc

改變逃逸代碼爲Alt-X

測試和工程在Linux上使用屏幕4.00.03。

您可能需要更改轉義,因爲我覺得這可能取決於事情喜歡你的語言和代碼集,等:我怎麼發現了什麼我轉義代碼是爲輸入

$ echo -n ^QM-x | perl -ne 'printf "%lo\n", ord($_)' 

^Q是readline的quoted-insert命令(它直接插入你輸入的內容而不試圖解釋它),而Mx是一個字面的Alt-X。

+0

我試過這個技巧,它不適合我。有沒有一種方法來調試呢? – Siva 2009-10-11 11:14:22

+0

Hi Siva - 我認爲最可能的區別是由於元鍵的終端編碼。我使用xterm和xterm termcap/terminfo設置;可能其他終端如kterm或gnome-terminal,或不同的TERM設置使用不同的編碼。我的回聲技巧在你的機器上產生了什麼? – 2009-10-13 10:59:38

5

我也是Emacs和屏幕用戶。雖然我很少在終端中使用Emacs,並且在屏幕會話中我也不想放棄C-a(它使用Emacs密鑰綁定)。我的解決方案是使用C-j作爲屏幕的前綴鍵,這是我願意犧牲的。在Emacs編程模式下,它綁定到我綁定到RET的(換行符和縮進),所以我真的不會錯過它。順便說一句:我知道這是一個建議,而不是一個答案,但我覺得這將是足夠寶貴的後期。

0

其他emacs用戶在這裏。

我發現的最佳解決方案是〜/。screenrc具有下列文件:

# C-a :source .screenrc 

escape ^gg 

住在這裏更新:https://gist.github.com/1058111

參見:http://ubuntuforums.org/showthread.php?t=498675

+0

順便說一句,這對我來說真的很好,因爲^ G是emacs中的「取消」序列。所以如果你的肌肉記憶力'痙攣',你不會在emacs中搞砸任何東西。 – audiodude 2011-07-01 08:52:17

+3

我不是這個的粉絲。 C-g是我想在Emacs中放棄的最後一個鍵。 – Psyllo 2011-09-22 21:35:38

+0

將其更改爲「escape^\'[」以使用反引用。 C- \「默認情況下不綁定到Emacs中的任何內容。 – Psyllo 2011-09-22 21:43:27

7

是可能的解決:使用寄存器逃脫命令限制:bindkey命令。只要把這個.screenrc

# reset escape key to the default 
escape ^Aa 

# auxiliary register 
register S ^A 

# Alt + x produces ^A and acts as an escape key 
bindkey "^[x" process S 

## Alt + space produces ^A and acts as an escape key 
# bindkey "^[ " process S 

http://adb.cba.pl/gnu-screen-tips-page-my.html#howto-alt-key-as-escape

6

爲了Alt鍵 + X爲命令默認前綴和遊離鈣,加上下面幾行.screenrc:

escape ^|| 
bindkey "^[x" command 

作爲副作用C- |也將是命令前綴。如果你需要這個鍵也是免費的,那麼修復「escape^||」因此。

+0

'^ [x'如何轉移到'Alt-x',其中'^'表示'Ctrl'(我不確定)? ''是否意味着'Alt'?謝謝。 – Chad 2017-12-07 03:42:08