Control(\C-
)またはEscape()をプレフィックスとして使用して\e
Readlineキーバインディングを設定する例のみを見つけることができます。
私の場合、macOSではその\C-
スペースが主キーバインディングで完全に埋められており、\e
Touch BarがあるMacbookではそのスペースは実用的ではありません。
入力"\M-f": kill-word
結果~/.inputrc
は次のとおりです。
bind -P | grep -F "\M-"
kill-word can be found on "\e[3;5~" "\ed".
ただし、またはプレフィックスをkill-word
使用して実行することはできません。 Readlineはこれを無視します。Option
Command
fn
この問題はmacOSに固有のものですか?どうすれば解決できますか?
また、キーバインディング(たとえば、より長いキーバインディングのプレフィックス)が実行される前に発生する「タイムアウト」をどのように制御できますか?
答え1
私はあなたが間違っているとは思わない。 Terminal.appに「Meta」に「Option」キーを使用するように指示します。ターミナル(⌘+ ,)の環境設定に移動してプロフィールだから鍵盤[基本プロファイル]タブをクリックし、[オプションをメタキーとして使用]を選択します。
それ以外の場合、Option +キーは、+がOption生成fするのと同じ特殊文字を生成する基本的なmacOSアクション(ほとんどのキーマップから)を取得します。フック付きの小文字「f」スクリーンショットから(すべて参照ここ)。
存在するi 2学期, 私は左 Option キーが既に基本的に合理的な作業を行っていると思いますが、もし備えてこれを変更する方法は次のとおりです。
OptionをEscapeに再マップする場合は、システム環境設定のキーボード設定ウィンドウの下部近くにある「修飾子キー...」ボタンをクリックして実行できます。
次に、利用可能なオプションから必要に応じて再マッピングします。
ControlキーがMacキーボード上の厄介な位置にあるため、Caps LockをControlに再マップできるように、新しいMacを使用して最初の5分でこの設定ウィンドウを開きました。
答え2
ユーティリティは次のとおりです。
showkey (1) - examine the codes sent by the keyboard
しかし、これはmac-osではないようです...ここに「キーコード」があります...?
または、ctrl-V(qouted insert)と入力し、いくつかの特殊キーを入力します。 Bashは^[OP
xtermキーと^[[[A
F1キーを使ってコンソールに印刷します。
行変数を読む:
keyseq-timeout (500)
半分完了したシーケンスに使用されるタイムアウト。
その下には、キーをシンボルに変換する一種のキーマップファイルが必要です。これは/usr/share/kbd/keymaps/mac/
Linuxから来たものです:
keycode 51 = Delete Remove
alt keycode 51 = Meta_Delete
shift alt keycode 51 = Meta_Delete
control keycode 51 = Remove
keycode 53 = Escape
alt keycode 53 = Meta_Escape
shift alt keycode 53 = Meta_Escape
keycode 54 = Control
keycode 55 = Alt # Command/Apple key
keycode 56 = Shift
keycode 57 = Caps_Lock
keycode 58 = AltGr # Alt/Option key
柔軟性が見えますか!メタ削除記号は殺害の単語になることができます…
バインディング '"^ [f":単語を削除する
またはctrl-Vの後にEscapeを入力する ^[
必要があります。 1バイトは曲折記号と角括弧ではありません。\e
次のように言うのと同じです。 ^CはShift-6を押してからShift-cを押すのではなく、control-Cを意味します。シェルまたはvimでctrl-vを押してから、Escと入力してください^[
。しかし、一歩後退すると、文字は一つだけです。 readlineのこれらのメタフラグオプションと一緒に複雑になることがあります...チェーン全体を説明します。
キーマップ「default.map」(スキャンコードと修飾子をキーシンボルに変換)
keycode 105 = Left F150 F151
string F150 = "\033[150"
string F151 = "\033[151"
keycode 106 = Right F154 F155
string F154 = "\033[154"
string F155 = "\033[155"
デフォルトでは、「左」の後ろのF150とF151は、ShiftとCtrlの左矢印を表します。 2番目のステップでは、文字列(この場合はエスケープシーケンス)を定義します。ここでは\e
動作しませんが、8進数033はascii 27で、control- [はEscapeです。このキーマップはLinux専用ですが、X Windowsにも同様のロジックがあります。
.inputrcから:
"\e[150": backward-word
"\e[151": shell-backward-word
"\e[154": forward-word
"\e[155": shell-forward-word
これはLinuxコンソールで非常にうまく機能します。 X Windows(Xorg)のxtermでは:まったくなし:Xorg自体がキーを検索します。
backward-word can be invoked via "\e[150", "\e[1;2D", "\e[1;3D", "\eb".
中央の2つのセミコロンは、VTxxxスタイルで装飾された左矢印です。これは事前設定されており、backward-word
自動的にバインドされます。
答え3
あなたの質問を正しく理解した場合:
bind '"^[f": kill-word'
Option+F
呼び出しを定義しますkill-word