.inputrc TABが期待どおりに動作しない


11

今日は順調です。別の質問です。

これらをに入れる.inputrcと、どちらも同じように動作しますか?

TAB: menu-complete
Shift-TAB: menu-complete-reverse

つまり、どちらも最後の1つが言うことを何でもします。

回答:


15

Readlineはと呼ばれる修飾子について何も知らずShift、未知の修飾子名を静かに無視します。お試しくださいwibble-TAB

アクションをShift+にバインドするにはTab、端末が送信するエスケープシーケンスを見つける必要があります。bashで、実行catしてCtrl+を入力しV、次にShift+を入力しTabます。これにより、文字通りエスケープシーケンスが挿入されます。最初の文字は、次のようにエスケープ文字になる可能性があり^[ます。端末によってエスケープシーケンスは異なりますが、一般的な可能性は␛[Z(エスケープ、左角括弧、大文字のZ)と␛␉(エスケープ、タブ)です。キーを適切にバインドします~/.inputrc(ここ\eで、エスケープ文字を意味します)。

"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward

1
ああ、^[Z私のために働いた(BASH); 詳細な回答をありがとう!:)
user541686

「猫」の前または後にEnterキーを押しますか?なぜ「猫」が必要なのですか?「猫」なしで同じエスケープシーケンスを取得するようです。
dougkramer 2014年

@ douglas.kramer Running catはbashバインディングを回避します。通常bashは、次の文字を文字どおりに挿入するために同じCtrl + Vバインディングを持っているため、違いはありません。
Gilles「SO-邪悪なことをやめなさい」14年

Shift + Tabで「shell-expand-command」にバインドできない。私が取得する: $ cat <Enter> <Shift+Tab>どのディスプレイ^[[Z 私はいつも追加でください\e先に私から取得シーケンスのCtrl+V?これは次のように変換されますか?"\e^[[Z": shell-expand-command
dougkramer 2014年

@dou ^[`\ e`で置換
Gilles「SO-邪悪なことをやめ

4

Xubuntu 16.04では、ターミナル:xfce4-terminal 0.6.3、シェル:bash

以下のためにShift+がTab動作するように私が使用していました:

bind '"\e[Z": menu-complete-backward'

~/.bash_profile使用:bind TAB:menu-complete及びbind '"\e[Z": menu-complete-backward'(単一引用符と二重引用符の使用に注意してください!)。
エリック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.