Ctrl-key
ターミナルで組み合わせがどのように機能するのか混乱しています。 Bashのマニュアルページには、次のようなさまざまな組み合わせがあります。
C-e
- 行末に移動C-f
- 一文字前に移動
など。
しかし、もう少しあります。文書化されていないショートカットの例:
C-j
(ORC-m
)は戻りキーとして使用されます。C-h
バックスペースキーの場合C-i
タブなどの場合
このショートカットが録音するのを忘れましたか?または
C-j
はいLF
C-m
はいCR
C-i
はいTab
これがASCIIの「基本」動作ですか?つまり、動作ですがC-j
実装されC-m
ません。C-i
渡すbashが他のものを介して?
C-v
もう一つの問題は、左矢印キーを押すと^[[D
画面が表示されることです。つまり、ESC-[-d
。ただし、を押すとESC-[-d
カーソルが左に移動しません。その理由は何ですか?
編集する:
C-j
最初は、を押すとキーボードがカーネル00001010
に直接渡されると思いました。しかし、などのプログラムを使ってキー押しと表示が別のイベントでxev
観察されたのでそうではないと思いました。したがって、を押すとキーボードは送信しませんが、複数のバイトを送信できます。では、これらの複数のバイトはどこで変換されますか?evtest
Control
j
C-j
00001010
00001010
ベストアンサー1
C-m
背中の動作はbashで実装されていますが、背中とC-i
同じであるという事実は、端末の動作によって決まります。すべての端末は常にこのように動作しており、これがアプリケーションで期待しているので、すべての端末がこのように動作します。端末とアプリケーション間のインターフェースは、キー入力ではなく文字(実際にはバイト)に基づいているため、印刷可能文字を送信しないキー入力とキー入力の組み合わせは、いかなる方法でもエンコードする必要があります。バラよりReturnTabキーボード入力とテキスト出力はどのように機能しますか?このトピックに関する追加情報。また、見ることができますhttps://emacs.stackexchange.com/questions/1020/problems-with-keybounds-when-using-terminal
TAB
タブ文字ですASCIIコード、これはASCIIのCtrl + I文字と同じです。他のキーも同じです。端末は、ユーザーがを押すとTab+を押すと両方ともこの文字を送信します。 (CR)および、および(ほとんどのキーボードにはありません)、およびの場合も同様です。またどちらが送るのか、それはそれ自体の問題です。CtrlIRET
C-m
LFD
C-j
ESC
C-[
BackSpaceC-h
C-?
端末の構成(stty
設定)も機能します。これはbashのいくつかの設定に影響しますが(たとえば、stty erase @
bashは押しをBackSpaceとして扱います)、現在の行には影響もコミットもしません@
。C-m
C-j
^[[D
はいEsc [ D、しかし資本金が必要ですD
。を押すとカーソルキーエスケープシーケンスが宣言されているので、Esc [ Dbashはキーを見るでしょう。Left用語キャップまたは用語情報データベース。デフォルトのバインディングはありませんEsc [ d(共通端末から送信されたエスケープシーケンスではありません)。