Tcshの長期使用から最近のBashの探索に切り替えようとしています。
スペースとスラッシュをWordの境界として扱うCtrl + wを除いて、お気に入りの機能をすべて移植することができました。おそらく、backward-kill-Wordです。ただし、Bashでは、readlineは最初のスペースまですべてを削除し、その間のすべてのスラッシュを削除します。
Bindを使用して.inputrcと.bashrcの両方で\ C-w:backward-kill-Wordのさまざまな組み合わせを試しましたが、希望どおりに機能させることができません。
面白いことに、仕事中のWindowsのPuTTYを使用すると、Alt + Backspaceを使用できます。これは、マニュアルにもデフォルトのバインディングであると記載されており、希望どおりの動作を生成できます。しかし、自宅のMacのTerminal.appでは、これは機能しません。 Terminal.appからログインしているFreeBSDまたはLinuxサーバーについても同じことが言えます。
そこで私はスーパーユーザーに助けを求めます。
readline
はバインドされません Ctrl-W デフォルトではターミナルドライバによって処理されるため、次のようになります。
$ stty -a
(...) werase = ^W; (...)
これを無効にするには、(~/.bashrc
で)実行する必要があります。
stty werase undef
bind '"\C-w": backward-kill-Word'
.inputrc
は、次の場合に読み取られるため、ここでは役に立ちません。 Ctrl-W まだwerase
に割り当てられています。
また、上記のように、\C-w
形式のkeyseqsは二重引用符で囲む必要があることに注意してください。
異なる端末が処理する場合があります Alt-Backspace 別の方法で。
1b 7f
(ESC DEL
)を送信しますmetaSendsEscape: true
は1b 08
(ESC BS
)を送信します。metaSendsEscape
は88
( HTS
、またはBS
最高ビットが設定されています)。Xtermには、の動作を制御するためのいくつかの設定があります Alt キー(呼ばれる Meta XtermおよびX11一般)。 metaSendsEscape
を使用して、 Alt キー押下の前にESC
(hex 1b
)を付けます。設定なし(デフォルトモード)、 Alt 入力文字の最上位ビットを設定し、特殊文字を生成します。 (例えば、 Alt-N 結果はそれぞれESC n
とî
になります。)
私が覚えている限り、Terminal.appにも同様の設定があり、Meta/Alt/whatever-Macs-useの動作を制御します。
grawityは、これは.inputrc
ファイルでは制御できないと書いていますが、それは正しくありません。
set bind-tty-special-chars off
で.inputrc
を実行すると、特別な端末文字の動作をカスタマイズできます。
例えば:
set bind-tty-special-chars off
Control-u: kill-whole-line
Control-w: backward-kill-Word
記録のために、iTerm2に適用される答えは設定することです Alt-Backspace (または Opt ⌥-⌫ Macの場合)英数字以外の文字を区切り文字として処理する0xb1
アクションを実行するために、16進コード0x7f
およびbackward-kill-Word
を送信します。
区別するために、これが私が説明している動作です。 Opt ⌥-⌫ 一度これを変更します:
echo "/example/filepath/with_non-alpha.characters@blah:meh
これに:
echo "/example/filepath/with_non-alpha.characters@blah:
そしてその後のプレス Opt ⌥-⌫:
echo "/example/filepath/with_non-alpha.characters@
echo "/example/filepath/with_non-alpha.
echo "/example/filepath/with_non-
echo "/example/filepath/with_
echo "/example/filepath/
したがって、PuTTYとTerminalに固有の、 grawityの答え は素晴らしいです。しかし、iTerm2の設定を適用する方法を探すのに恥ずかしい時間を費やしたので、このスーパーユーザーの投稿が最も頻繁に表示されるようです。したがって、この質問に添付された回答としてiTerm2に適用される関連情報を提供する責任があるようです。