行編集

行編集機能は、対話モードのシェルにコマンドを入力する際に使える、コマンドの簡易編集機能です。行編集機能は、コマンドを編集するための簡単なエディタとして働きます。行編集機能はコマンド履歴とも連携しており、fc コマンドを使ってエディタを起動する代わりに行編集で直接コマンドを編集・再実行できます。

行編集には複数の編集モードがあり、モードごとにキー操作の割り当てが異なります。行編集の有効・無効を切り替えたりモードを選択したりするには、set コマンドで編集モードに対応するオプションを設定します。あるモードに対応するオプションを有効にすると、そのモードの行編集が有効になります (同時に他のモードのオプションは自動的に無効になります)。現在有効になっているモードのオプションを無効にすると、行編集は無効になります。現在 yash が搭載している編集モードは vi 風と emacs 風の二種類で、それぞれ対応するオプションは -o vi-o emacs です。

シェルが対話モードで起動したとき、標準入力と標準エラーがともに端末ならば、vi 風行編集が自動的に有効になります。

行編集は、標準入力と標準エラーがともに端末のときだけ使えます。この条件が満たされていないときは、行編集は働きません。行編集が働くとき、シェルは termios インタフェースを使用して端末の入出力モードを一時的に変更し、terminfo インタフェースを使用して入力されたキーの判別などを行います。

行編集のオプション

編集モードを指定するオプションの他に、行編集に関わるものとして以下のオプションが set コマンドで設定できます。

-o le-convmeta, --le-convmeta
Terminfo データベースで得られた情報を無視し、入力の 8 ビット目を常に meta-key フラグとみなします。
-o le-noconvmeta, --le-noconvmeta
Terminfo データベースで得られた情報を無視し、入力の 8 ビット目を他のビットと同様に扱います。
-o le-convmeta (--le-convmeta) オプションと -o le-noconvmeta (--le-noconvmeta) オプションは片方しか有効にできません (片方を有効にするともう片方は自動的に無効になります)。どちらも無効な時は terminfo データベースの情報に従って 8 ビット目を meta-key とみなすかどうか判断します。
-o le-promptsp, --le-promptsp
このオプションが有効な時、シェルはプロンプトを出力する前に、プロンプトが必ず行頭に来るようにカーソルを移動するための特殊な文字列を出力します。
このオプションは最初から有効になっています。
-o le-visiblebell, --le-visiblebell
シェルが警告を発する際、警告音を鳴らす代わりに端末を点滅させます。

編集モード

Vi 風編集モードは vi に似たキー操作で編集を行う編集モードです。Vi 風編集モードでは、挿入モードとコマンドモードの二つのモードを適宜切り替えて編集を行います。編集が始まるときはモードは必ず挿入モードになっています。挿入モードでは入力した文字が基本的にそのままバッファに挿入されます。コマンドモードでは入力した文字はカーソルを移動したり文字を消去したりするコマンドとして解釈されます。

Emacs 風編集モードは emacs に似たキー操作で編集を行う編集モードです。入力した文字は基本的にそのままバッファに挿入されますが、コマンドとして解釈される一部のキー操作が vi 風編集モードの挿入モードと異なります。

これらのモードの他に、コマンドの検索の際に用いる検索モードが vi 風と emacs 風とそれぞれにあります。

行編集コマンド

行編集中に入力された文字は全て以下の行編集コマンドのいずれかとして解釈されます。コマンドとキーの対応は bindkey コマンドで変更できます (検索モードを除く)。

以下の一覧には各コマンドに対応するキー入力の初期設定も示してあります。なお、vi-insert は vi 風編集モードの挿入モードを、vi-command は vi 風編集モードのコマンドモードを、vi-search は vi 風編集モードの検索モードを、emacs は emacs 風編集モードを、emacs-search は emacs 風編集モードの検索モードを示します。

コマンドの中には引数を指定することでその動作を変更できるものがあります。例えば forward-char コマンドは通常はカーソルを一文字分前に移動しますが、引数を指定するとその引数の文字数分だけカーソルを移動します。引数は、目的のコマンドの直前に digit-argument コマンドを使うことで指定できます。

基本的な編集コマンド

noop
何も行いません。
vi-command: \^[
alert
警告音を発しまたは端末を点滅させます。
self-insert
入力した文字を現在のカーソルの位置に挿入します。(エスケープシーケンスによるエスケープの対象となる文字は挿入できません)
vi-insert, emacs: \\
insert-tab
タブを現在のカーソルの位置に挿入します。
emacs: \^[\^I
expect-verbatim
このコマンドの直後に入力する一文字を現在のカーソル位置に挿入します。このコマンドを使うと self-insert コマンドで入力できない文字も入力できます (ナル文字 '\0' を除く)。
vi-insert, vi-search, emacs-search: \^V
emacs: \^Q, \^V
digit-argument
このコマンドは数字またはハイフンの入力に対してのみ有効です。入力した数字を次のコマンドへの引数として受け付けます (ハイフンの場合は符号を反転します)。
Digit-argument コマンドを連続して使うことで複数桁の引数を指定できます。例えば vi 風編集モードのコマンドモードで 12h と入力すると、h に対応するコマンドに引数 12 を与えたことになります (すなわちカーソルが左に 12 文字分移動します)。
vi-command: 1, 2, 3, 4, 5, 6, 7, 8, 9
emacs: \^[0, \^[1, \^[2, \^[3, \^[4, \^[5, \^[6, \^[7, \^[8, \^[9, \^[-
bol-or-digit
引数がない場合は beginning-of-line コマンドと同じように、引数がある場合は digit-argument コマンドと同じように動作します。
vi-command: 0
accept-line
行編集を終了し、現在のバッファの内容をシェルへの入力として与えます。行の末尾には自動的に改行が付け加わります。
vi-insert, vi-command, emacs, emacs-search: \^J, \^M
abort-line
行編集を中止し、空の入力をシェルに与えます。
vi-insert, vi-command, vi-search, emacs, emacs-search: \!, \^C
eof
シェルに入力の終わりを知らせます (これによりシェルは終了します)。
eof-if-empty
バッファが空ならば、行編集を終了し、シェルに入力の終わりを知らせます (これによりシェルは終了します)。バッファが空でなければ、alert コマンドと同様に動作します。
vi-insert, vi-command: \#, \^D
eof-or-delete
バッファが空ならば、行編集を終了し、シェルに入力の終わりを知らせます (これによりシェルは終了します)。バッファが空でなければ、delete-char コマンドと同様に動作します。
emacs: \#, \^D
accept-with-hash
引数が与えられていないかバッファの最初の文字が # でなければ、バッファの最初に # を挿入します。そうでなければバッファの最初の # を削除します。いずれの場合も、その後 accept-line コマンドと同様に動作します。
vi-command: #
emacs: \^[#
setmode-viinsert
編集モードを vi 風編集モードの挿入モードに変更します。
vi-command: i, \I
setmode-vicommand
編集モードを vi 風編集モードのコマンドモードに変更します。
vi-insert: \^[
setmode-emacs
編集モードを emacs 風編集モードに変更します。
expect-char
abort-expect-char
これは find-char コマンドなどを実装するために yash 内部で使われているコマンドで、直接使用しても意味はありません。
redraw-all
行編集のプロンプトやバッファを端末に表示しなおします。
vi-insert, vi-command, vi-search, emacs, emacs-search: \^L
clear-and-redraw-all
端末の表示をクリアし、行編集のプロンプトやバッファを端末に表示しなおします。

移動コマンド

移動コマンドはカーソルを移動させるコマンドです。ほとんどの移動コマンドは引数を与えることでそのコマンドを引数の回数だけ実行するのと同じように動作させられます。例えば forward-char コマンドに引数 4 を与えると、カーソルを 4 文字先に進めます。

以下、bigword とは一文字以上の連続した空白でない文字をいい、semiword とは一文字以上の連続した空白でも句読点でもない文字をいい、emacsword とは一文字以上の連続した英数字をいいます。また viword とは以下のいずれかをいいます

以下に移動コマンドの一覧を示します。

forward-char
カーソルを次の文字に移動します。
vi-insert: \R
vi-command: l, (空白文字), \R
emacs: \R, \^F
backward-char
カーソルを前の文字に移動します。
vi-insert: \L
vi-command: h, \L, \B, \?, \^H
emacs: \L, \^B
forward-bigword
カーソルを次の bigword に移動します。
vi-command: W
end-of-bigword
カーソルを bigword の終わりまで移動します。
vi-command: E
backward-bigword
カーソルを前の bigword に移動します。
vi-command: B
forward-semiword
カーソルを次の semiword に移動します。
end-of-semiword
カーソルを semiword の終わりまで移動します。
backward-semiword
カーソルを前の semiword に移動します。
forward-viword
カーソルを次の viword に移動します。
vi-command: w
end-of-viword
カーソルを viword の終わりまで移動します。
vi-command: e
backward-viword
カーソルを前の viword に移動します。
vi-command: b
forward-emacsword
カーソルを次の emacsword に移動します。
emacs: \^[f, \^[F
backward-emacsword
カーソルを前の emacsword に移動します。
emacs: \^[b, \^[B
beginning-of-line
カーソルをバッファの先頭に移動します。
vi-insert, vi-command: \H
emacs: \H, \^A
end-of-line
カーソルをバッファの末尾に移動します。
vi-insert: \E
vi-command: $, \E
emacs: \E, \^E
go-to-column
カーソルをバッファ内の n 文字目に移動します。ただし n は引数です (引数が与えられていない場合は 1)。
vi-command: |
first-nonblank
カーソルをバッファ内の最初の空白でない文字に移動します。
vi-command: ^
find-char
このコマンドの直後に入力した文字がある位置までカーソルを進めます。
vi-command: f
emacs: \^]
find-char-rev
このコマンドの直後に入力した文字がある位置までカーソルを戻します。
vi-command: F
emacs: \^[\^]
till-char
このコマンドの直後に入力した文字がある位置の直前までカーソルを進めます。
vi-command: t
till-char-rev
このコマンドの直後に入力した文字がある位置の直後までカーソルを戻します。
vi-command: T
refind-char
前回実行した find-char, find-char-rev, till-char, till-char-rev コマンドを再実行します。
vi-command: ;
refind-char-rev
前回実行した find-char, find-char-rev, till-char, till-char-rev コマンドを、カーソルの進む向きを逆にして再実行します。
vi-command: ,

編集コマンド

編集コマンドはバッファの内容を変更するコマンドです。ほとんどの編集コマンドは引数を与えることでそのコマンドを引数の回数だけ実行するのと同じように動作させられます。

名前に kill が付くコマンドで削除した文字列はキルリングという場所に保管され、後で put などのコマンドでバッファに戻すことができます。

以下に編集コマンドの一覧を示します。

delete-char
カーソルのところにある文字を削除します。引数を与えた場合は kill-char コマンドと同様に動作します。
vi-insert, emacs: \X
delete-bigword
カーソルのところにある bigword を削除します。引数を与えた場合は kill-bigword コマンドと同様に動作します。
delete-semiword
カーソルのところにある semiword を削除します。引数を与えた場合は kill-semiword コマンドと同様に動作します。
delete-viword
カーソルのところにある viword を削除します。引数を与えた場合は kill-viword コマンドと同様に動作します。
delete-emacsword
カーソルのところにある emacsword を削除します。引数を与えた場合は kill-emacsword コマンドと同様に動作します。
backward-delete-char
カーソルの前にある文字を削除します。引数を与えた場合は backward-kill-char コマンドと同様に動作します。
vi-insert, emacs: \B, \?, \^H
backward-delete-bigword
カーソルの前にある bigword を削除します。引数を与えた場合は backward-kill-bigword コマンドと同様に動作します。
backward-delete-semiword
カーソルの前にある semiword を削除します。引数を与えた場合は backward-kill-semiword コマンドと同様に動作します。
vi-insert: \^W
backward-delete-viword
カーソルの前にある viword を削除します。引数を与えた場合は backward-kill-viword コマンドと同様に動作します。
backward-delete-emacsword
カーソルの前にある emacsword を削除します。引数を与えた場合は backward-kill-emacsword コマンドと同様に動作します。
delete-line
バッファの内容を全て削除します。
forward-delete-line
カーソル以降の全ての文字を削除します。
backward-delete-line
カーソルより前の全ての文字を削除します。
vi-insert: \$, \^U
kill-char
カーソルのところにある文字を削除し、キルリングに保管します。
vi-command: x, \X
kill-bigword
カーソルのところにある bigword を削除し、キルリングに保管します。
kill-semiword
カーソルのところにある semiword を削除し、キルリングに保管します。
kill-viword
カーソルのところにある viword を削除し、キルリングに保管します。
kill-emacsword
カーソルのところにある emacsword を削除し、キルリングに保管します。
emacs: \^[d, \^[D
backward-kill-char
カーソルの前にある文字を削除し、キルリングに保管します。
vi-command: X
backward-kill-bigword
カーソルの前にある bigword を削除し、キルリングに保管します。
emacs: \^W
backward-kill-semiword
カーソルの前にある semiword を削除し、キルリングに保管します。
backward-kill-viword
カーソルの前にある viword を削除し、キルリングに保管します。
backward-kill-emacsword
カーソルの前にある emacsword を削除し、キルリングに保管します。
emacs: \^[\B, \^[\?, \^[\^H
kill-line
バッファの内容を全て削除し、キルリングに保管します。
forward-kill-line
カーソル以降の全ての文字を削除し、キルリングに保管します。
emacs: \^K
backward-kill-line
カーソルより前の全ての文字を削除し、キルリングに保管します。
emacs: \$, \^U, \^X\B, \^X\?
put-before
最後にキルリングに保管した文字列をカーソルの直前に挿入します。カーソルは挿入した文字列の最後の文字のところに移動します。
vi-command: P
put
最後にキルリングに保管した文字列をカーソルの直後に挿入します。カーソルは挿入した文字列の最後の文字のところに移動します。
vi-command: p
put-left
最後にキルリングに保管した文字列をカーソルの直前に挿入します。カーソルは挿入した文字列の直後に移動します。
emacs: \^Y
put-pop
このコマンドは put-before, put, put-left, put-pop コマンドの直後にだけ使えます。このコマンドは直前のコマンドでキルリングから挿入した文字列を削除し、代わりにその文字列の前にキルリングに保管した文字列を挿入します。
emacs: \^[y, \^[Y
undo
直前の編集コマンドを取り消し、バッファの内容を前の状態に戻します。
vi-command: u
emacs: \^_, \^X\^U, \^X\$
undo-all
全ての編集コマンドを取り消し、バッファの内容を初期状態に戻します。
vi-command: U
emacs: \^[\^R, \^[r, \^[R
cancel-undo
undo, undo-all による編集コマンドの取り消しを取り消し、バッファの内容を復元します。
vi-command: \^R
cancel-undo-all
undo, undo-all による編集コマンドの取り消しを全て取り消し、バッファの内容を復元します。
redo
直前の編集コマンドを繰り返します。
vi-command: .

Vi 固有のコマンド

vi-replace-char
カーソルのところにある文字を、このコマンドの直後に入力した文字に置き換えます。
vi-command: r
vi-insert-beginning
カーソルをバッファの先頭に移動したのち、setmode-viinsert コマンドと同様に動作します。
vi-command: I
vi-append
カーソルを次の文字に移動したのち、setmode-viinsert コマンドと同様に動作します。
vi-command: a
vi-append-end
カーソルをバッファの末尾に移動したのち、setmode-viinsert コマンドと同様に動作します。
vi-command: A
vi-replace
Setmode-viinsert コマンドと同様に動作しますが、同時に上書きモードを有効にします。上書きモードでは、self-insert コマンドは文字を挿入する代わりにカーソルのところにある文字を置き換えます。上書きモードは編集モードを変更するまで有効です。
vi-command: R
vi-switch-case
このコマンドの直後には移動コマンドを入力する必要があります。移動コマンドが動かしたカーソルの範囲にある文字の大文字と小文字を入れ替えます。
vi-switch-case-char
カーソルのところにある文字の大文字と小文字を入れ替えて、カーソルを次の文字に移動します。
vi-command: ~
vi-yank
このコマンドの直後には移動コマンドを入力する必要があります。移動コマンドが動かしたカーソルの範囲にある文字をキルリングに保管します。
vi-command: y
vi-yank-to-eol
カーソルの位置からバッファの末尾までにある文字をキルリングに保管します。
vi-command: Y
vi-delete
このコマンドの直後には移動コマンドを入力する必要があります。移動コマンドが動かしたカーソルの範囲にある文字を削除し、キルリングに保管します。
vi-command: d
vi-delete-to-eol
カーソルの位置からバッファの末尾までにある文字を削除し、キルリングに保管します。
vi-command: D
vi-change
このコマンドの直後には移動コマンドを入力する必要があります。移動コマンドが動かしたカーソルの範囲にある文字を削除し、その後編集モードを vi 風編集モードの挿入モードに変更します。
vi-command: c
vi-change-to-eol
カーソルの位置からバッファの末尾までにある文字を削除し、その後編集モードを vi 風編集モードの挿入モードに変更します。
vi-command: C
vi-change-all
バッファの内容を全て削除し、その後編集モードを vi 風編集モードの挿入モードに変更します。
vi-command: S
vi-yank-and-change
このコマンドの直後には移動コマンドを入力する必要があります。移動コマンドが動かしたカーソルの範囲にある文字を削除しキルリングに保管した後、編集モードを vi 風編集モードの挿入モードに変更します。
vi-yank-and-change-to-eol
カーソルの位置からバッファの末尾までにある文字を削除しキルリングに保管した後、編集モードを vi 風編集モードの挿入モードに変更します。
vi-yank-and-change-all
バッファの内容を全て削除しキルリングに保管した後、編集モードを vi 風編集モードの挿入モードに変更します。
vi-substitute
カーソルのところにある文字を削除しキルリングに保管した後、編集モードを vi 風編集モードの挿入モードに変更します。
vi-command: s
vi-append-last-bigword
コマンド履歴の中で最も新しいコマンドにおける最後の bigword を、空白文字に続けてカーソルの位置の直後に挿入します。引数 n を与えたときは最後の bigword の代わりに n 番目の bigword を挿入します。その後、setmode-viinsert コマンドと同様に動作します。
vi-command: _
vi-exec-alias
このコマンドの直後に入力した文字を c とすると、_c という名前のエイリアスの内容をシェルへの入力とみなして行編集コマンドとして解釈・実行します。
vi-command: @
vi-edit-and-accept
エディタとして vi を起動し、バッファの内容を編集させます。エディタが終了すると編集後の内容をバッファに反映した後 accept-line コマンドと同様に動作します。ただしエディタの終了ステータスが 0 でないときは何も行いません。
vi-command: v
vi-search-forward
順方向の履歴検索を開始します。編集モードを vi 風編集モードの検索モードに変更します。
vi-command: ?
vi-search-backward
逆方向の履歴検索を開始します。編集モードを vi 風編集モードの検索モードに変更します。
vi-command: /

Emacs 固有のコマンド

emacs-transpose-chars
カーソルの前にある文字を右に移動します。
emacs: \^T
emacs-transpose-words
カーソルの前にある emacsword を右に移動します。
emacs: \^[t, \^[T
emacs-downcase-word
カーソルの後にある emacsword を小文字に変換します。
emacs: \^[l, \^[L
emacs-upcase-word
カーソルの後にある emacsword を大文字に変換します。
emacs: \^[u, \^[U
emacs-capitalize-word
カーソルの後にある emacsword をキャピタライズ (各単語の頭文字だけ大文字にする) します。
emacs: \^[c, \^[C
emacs-delete-horizontal-space
カーソルの前後にある空白を削除します。引数を与えるとカーソルの前にある空白を削除します。
emacs: \^[\\
emacs-just-one-space
カーソルの前後にある空白の個数を一つに調整します。引数を与えるとその引数の数だけ空白を残します。
emacs: \^[ (Escape の後に空白文字)
emacs-search-forward
順方向の履歴検索を開始します。編集モードを emacs 風編集モードの検索モードに変更します。
emacs: \^S
emacs-search-backward
順方向の履歴検索を開始します。編集モードを emacs 風編集モードの検索モードに変更します。
emacs: \^R

コマンド履歴関連のコマンド

oldest-history
コマンド履歴の中で最も古いコマンドに移動します。引数を与えるとそれを履歴番号とみなしてその番号のコマンドに移動します。カーソルはバッファの先頭に移動します。
vi-command: G
newest-history
コマンド履歴の中で最も新しいコマンドに移動します。引数を与えるとそれを履歴番号とみなしてその番号のコマンドに移動します。カーソルはバッファの先頭に移動します。
return-history
コマンド履歴のどのコマンドにも対応しない新規バッファに移動します。引数を与えるとそれを履歴番号とみなしてその番号のコマンドに移動します。カーソルはバッファの先頭に移動します。
vi-command: g
oldest-history-eol
コマンド履歴の中で最も古いコマンドに移動します。引数を与えるとそれを履歴番号とみなしてその番号のコマンドに移動します。カーソルはバッファの末尾に移動します。
emacs: \^[<
newest-history-eol
コマンド履歴の中で最も新しいコマンドに移動します。引数を与えるとそれを履歴番号とみなしてその番号のコマンドに移動します。カーソルはバッファの末尾に移動します。
return-history-eol
コマンド履歴のどのコマンドにも対応しない新規バッファに移動します。引数を与えるとそれを履歴番号とみなしてその番号のコマンドに移動します。カーソルはバッファの末尾に移動します。
emacs: \^[>
next-history
コマンド履歴の中で次のコマンドに移動します。カーソルはバッファの先頭に移動します
vi-command: j, +, \D, \^N
prev-history
コマンド履歴の中で前のコマンドに移動します。カーソルはバッファの先頭に移動します
vi-command: k, -, \U, \^P
next-history-eol
コマンド履歴の中で次のコマンドに移動します。カーソルはバッファの末尾に移動します
vi-insert, emacs: \D, \^N
prev-history-eol
コマンド履歴の中で前のコマンドに移動します。カーソルはバッファの末尾に移動します
vi-insert, emacs: \U, \^P
search-again
最後に行ったコマンド履歴検索をもう一度行います。
vi-command: n
search-again-rev
最後に行ったコマンド履歴検索を方向を逆にしてもう一度行います。
vi-command: N
search-again-forward
最後に行ったコマンド履歴検索を順方向にもう一度行います。
search-again-backward
最後に行ったコマンド履歴検索を逆方向にもう一度行います。

コマンド履歴検索モードのコマンド

srch-self-insert
入力した文字を検索用バッファに挿入します。(エスケープシーケンスによるエスケープの対象となる文字は挿入できません)
vi-search, emacs-search: \\
srch-backward-delete-char
検索用バッファの最後の一文字を削除します。
検索用バッファが空の場合、vi 風編集モードでは srch-abort-search コマンドと同様に動作します。
検索用バッファが空の場合、emacs 風編集モードでは alert コマンドと同様に動作します。
vi-search, emacs-search: \B, \?, \^H
srch-backward-delete-line
検索用バッファの内容を全て削除します。
vi-search, emacs-search: \$, \^U
srch-continue-forward
現在表示している暫定検索結果の次の結果を順方向に探します。
emacs-search: \^S
srch-continue-backward
現在表示している暫定検索結果の次の結果を逆方向に探します。
emacs-search: \^R
srch-accept-search
検索を終了し、現在表示している暫定検索結果を確定します。検索結果に移動します。
vi-search: \^J, \^M
emacs-search: \^J, \^[
srch-abort-search
検索を中止し、検索を開始する前の状態に戻ります。
vi-search: \^[
emacs-search: \^G

エスケープシーケンス

Bindkey コマンドで行編集のキー設定を表示・設定する際、ファンクションキーなどの特殊なキーはエスケープシーケンスで表わします。エスケープシーケンスは全てバックスラッシュ (\) で始まります。またバックスラッシュそのものもエスケープの対象です。エスケープシーケンスとキーの対照は以下の通りです。

\\
バックスラッシュ (\)
\B
Backspace
\D
↓矢印キー
\E
End
\H
Home
\I
Insert (Insert-char, Enter-insert-mode)
\L
←矢印キー
\N
Page-down (Next-page)
\P
Page-up (Previous-page)
\R
→矢印キー
\U
↑矢印キー
\X
Delete
\!
INTR
\#
EOF
\$
KILL
\?
ERASE
\^@
Ctrl + @
\^A, \^B, …, \^Z
Ctrl + A, Ctrl + B, …, Ctrl + Z
※ Ctrl + I は Tab、Ctrl + J は Newline、Ctrl + M は Carriage-return です。
\^[
Ctrl + [ (Escape)
\^\
Ctrl + \
\^]
Ctrl + ]
\^^
Ctrl + ^
\^_
Ctrl + _
\^?
Ctrl + ? (Delete)
\F00, F01, …, \F63
F0, F1, …, F63
\a1
キーパッドの左上キー
\a3
キーパッドの右上キー
\b2
キーパッドの中央キー
\bg
Beginning
\bt
Back-tab
\c1
キーパッドの左下キー
\c3
キーパッドの右下キー
\ca
Clear-all-tabs
\cl
Close
\cn
Cancel
\co
Command
\cp
Copy
\cr
Create
\cs
Clear-screen または erase
\ct
Clear-tab
\dl
Delete-line
\ei
Exit-insert-mode
\el
Clear-to-end-of-line
\es
Clear-to-end-of-screen
\et
Enter (Send)
\ex
Exit
\fd
Find
\hp
Help
\il
Insert-line
\ll
Home-down
\me
Message
\mk
Mark
\ms
マウスイベント
\mv
Move
\nx
Next-object
\on
Open
\op
Options
\pr
Print (Copy)
\pv
Previous-object
\rd
Redo
\re
Resume
\rf
Ref (Reference)
\rh
Refresh
\rp
Replace
\rs
Restart
\sf
Scroll-forward (Scroll-down)
\sl
Select
\sr
Scroll-backward (Scroll-up)
\st
Set-tab
\su
Suspend
\sv
Save
\ud
Undo
\SE
Shift + End
\SH
Shift + Home
\SI
Shift + Insert
\SL
Shift + ←矢印キー
\SR
Shift + →矢印キー
\SX
Shift + Delete
\Sbg
Shift + Beginning
\Scn
Shift + Cancel
\Sco
Shift + Command
\Scp
Shift + Copy
\Scr
Shift + Create
\Sdl
Shift + Delete-line
\Sel
Shift + End-of-line
\Sex
Shift + Exit
\Sfd
Shift + Find
\Shp
Shift + Help
\Smg
Shift + Message
\Smv
Shift + Move
\Snx
Shift + Next
\Sop
Shift + Options
\Spr
Shift + Print
\Spv
Shift + Previous
\Srd
Shift + Redo
\Sre
Shift + Resume
\Srp
Shift + Replace
\Ssu
Shift + Suspend
\Ssv
Shift + Save
\Sud
Shift + Undo

INTR, EOF, KILL, ERASE の四つは stty コマンドなどで設定される端末の特殊文字です。一般的な環境では、INTR は Ctrl + C に、EOF は Ctrl + D に、KILL は Ctrl + U に、ERASE は Ctrl + H または Ctrl + ? に設定されています。これら四つは他のキー入力よりも優先して認識されます。