^ 字元在 ^X^I 之類的序列中是什麼意思?
我正在從 zsh 郵件列表中閱讀有關鍵綁定的消息,我想知道我需要按哪個鍵:
^X^I
(我認為Ctrl-X
Ctrl-I
,首都X
和I
)^[^@
(我想Ctrl-Esc-@
??)^X^[q
(我想Ctrl-X
Esc-q
??)^XQ
(我認為Ctrl-X
和 Q ??)
^[[1;3A
^[[1;3D
從
bindkey
^[[1;5C
^[[A
我知道這
^[
意味著 Esc,但我不知道如何找到其他人。有沒有列出這些的官方參考資料或網站?
^*c*
是Ctrl
+的常用表示法,*c*
其中c是(大寫)字母或@[\]^_
. 它指定相應的控製字元。對應的是控製字元的數字程式碼是可列印字元(字母或標點符號)的數字程式碼減64,對應於在base 2中設置一個位為0。另外,^?
通常表示字元127。一些鍵發送控製字元:
Escape
=Ctrl
+[
Tab
=Ctrl
+I
Return
(或Enter
或⏎
)=Ctrl
+M
Backspace
=Ctrl
+?
或Ctrl
+H
(取決於終端配置)
Alt
(通常被稱為Meta
是因為這是歷史 Unix 機器上該位置的鍵名)加上一個可列印的字元發送^[
(轉義)後跟該字元。大多數功能鍵和游標鍵都會發送轉義序列,即字元
^[
後跟一些可列印字元。詳細資訊取決於終端及其配置。對於 xterm,預設值記錄在手冊中。該手冊對初學者不友好。以下是一些幫助提示:
- CSI 表示
^[[
,即轉義後跟開括號。- SS3 表示
^[O
,即轉義後跟大寫-O。- “應用程序模式”是全屏程序通常會打開的東西。由於歷史原因,某些鍵在此模式下發送不同的轉義序列。(實際上有多種模式,但我不會詳細討論,因為在實踐中,如果重要,您可以綁定兩種模式的轉義序列,因為沒有衝突。)
- 修飾符 (
Shift
,Ctrl
,Alt
/Meta
) 由數字程式碼表示。在轉義序列的最後一個字元之前插入分號和該數字。以文件中的範例為例:F5
發送^[[15~
和Shift
+F5
發送^[[15;2~
。對於發送^[[
和一個字母X的游標鍵,表示修飾符M,轉義序列是。^[[1;*M**X*
Xterm 遵循ANSI 標準,該標準本身基於物理終端的歷史使用情況。大多數現代終端仿真器都遵循 ANSI 標準並實現了一些但不是全部的 xterm 擴展。不過,請期待終端之間的微小差異。
因此:
^X^I
=Ctrl
+X
Ctrl
+I
=Ctrl
+X
Tab
^[^@
=Ctrl
+Alt
+@
=Escape
Ctrl
+@
。在大多數終端上,Ctrl
+Space
也發送^@
so^[^@
=Ctrl
+Alt
+Space
=Escape
Ctrl
+Space
。
^X^[q
=Ctrl
+X
Alt
+q
=Ctrl
+X
Escape
q
^XQ
=Ctrl
+X
Shift
+q
^[[A
=Up
^[[1;3A
=Alt
+Up
(Up
, with表示修飾符M )。請注意,許多終端實際上並沒有為+發送這些轉義序列*。1;M
Alt``*cursor key*
* **^[[1;3D
=Alt
+Left
^[[1;5C
=Ctrl
+Right
* *沒有通用、方便的方法來查找與轉義序列對應的鍵。反過來,在 shell 提示符下(或在許多基於終端的編輯器中)按Ctrl
+V
後跟一個鍵和弦會按字面意思插入轉義序列。另請參閱鍵盤輸入和文本輸出如何工作?和鍵綁定表?*