私は私の次のバインディングを実行しようとしています~/.inputrc
。
(Ctrl+Del): kill-word
(Ctrl+Backspace): backward-kill-word
(Ctrl+forward arrow): forward-word
(Ctrl+back arrow): backward-word
(Home): beginning-of-line
(End): end-of-line
実際のキーシーケンスシンボルは何を使うべきですか?
答え1
このような:
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[H": beginning-of-line
"\e[F": end-of-line
"\eOH": beginning-of-line
"\eOF": end-of-line
"\e[1~": beginning-of-line
"\e[4~": end-of-line
端末の設定と使用可否により、 の変形が送信され、screen
修正xterm
されたカーソルキーは一貫した値を送信します。変更できます(他の端末では一般的には使用しません)。HomeEndControlxterm
パスしないと、control/Del および control/backspace が機能しないことがあります。デル6キー編集キーボードの左下のキーを参照しています。 xtermの場合"\e[3;5~"
。
Puttyでは制御修飾子を使用しているため、「ctrlarrows」のオプションはほとんどありません。ノーマルそしてアプリケーションカーソルキーのモードです。つまり、「\e[C」(標準)と「\eOC」(アプリケーション)を切り替えることができます。さらに、上記の「\ e [H」を取得するために、home / endを(パテ開発者が「rxvt」と呼ぶものとして)変更することができます。
追加資料:
答え2
ファンクションキーとカーソルキーは、ESC(エスケープ)文字で始まるエスケープシーケンスを送信します。Ctrl+を押してVからキーまたはキーコードを押します。これにより、ESC文字がそのまま挿入され、その後にエスケープシーケンスの残りの文字が挿入されます。
Ctrlたとえば、++V Ctrlを押すとLeftが挿入されているとします^[O5D
。^[
エスケープ文字です。それから.inputrc
それを結合します。
"\eO5D": backward-word
特定のキーのエスケープシーケンスは端末によって異なるため、使用する端末と構成方法によっては、同じ機能に複数のエスケープシーケンスをバインドできます。良いニュースは、通常、異なる端末の異なるキーに対応するエスケープシーケンスがないことです。
多くの端末は、すべてのキーとキーに対して異なるエスケープシーケンスを送信しません。たとえば、+と++が同じエスケープシーケンスをCtrl送信していることがわかります。ターミナル構成でこの問題を解決する方法がある場合とない場合があります。LeftCtrlShiftLeftこの投稿Emacsについての議論。また、見ることができますGNU画面「コマンド文字」を定義するための包括的な可能性セットを提供する方法は?そしてキーボード入力とテキスト出力はどのように機能しますか?そしてGNU画面「コマンド文字」を定義するための包括的な可能性セットを提供する方法は?このトピックに関するいくつかの背景情報です。