Terminal

^ 字元在 ^X^I 之類的序列中是什麼意思?

  • January 19, 2021

我正在從 zsh 郵件列表中閱讀有關鍵綁定的消息,我想知道我需要按哪個鍵:

  1. ^X^I(我認為Ctrl-X Ctrl-I,首都XI
  2. ^[^@(我想Ctrl-Esc-@??)
  3. ^X^[q(我想Ctrl-X Esc-q??)
  4. ^XQ (我認為Ctrl-X和 Q ??)

來自zsh 上的 Archlinux wiki 頁面

  1. ^[[1;3A
  2. ^[[1;3D

bindkey

  1. ^[[1;5C
  2. ^[[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;MAlt``*cursor key** ** ^[[1;3D = Alt+Left

  • ^[[1;5C = Ctrl+Right* *沒有通用、方便的方法來查找與轉義序列對應的鍵。反過來,在 shell 提示符下(或在許多基於終端的編輯器中)按Ctrl+V後跟一個鍵和弦會按字面意思插入轉義序列。

另請參閱鍵盤輸入和文本輸出如何工作?鍵綁定表?*

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