ターミナルエミュレーターでAlt-Leftで単語をスキップできない


16

以前の仕事のDebian Wheezyマシンでは、Alt + LeftおよびAlt + Rightに慣れて、アクティブなコマンドライン(bash内)の単語間をスキップしました。

家で私はジェシー(Debianの8.0、枝をテスト)にアップグレードしたので、これはもう動作しません。代わりに前の単語にスキップする、Altキーを押しながら左は何かのように印刷しDたりします[D。OTOH、sshを開いて、私の頭のないDebian Wheezyに接続すると、完全に機能します。

さらに、Fedora 20を新しい仕事にインストールしたところ、動作は同じです。これは、bash、csh、およびksh(で始まるenv -i)、rxvt-unicode、およびxfce4-terminalに適用されるため、これらのレベル以外のものでなければなりません。

スタック内の他のどこで違いを見つける必要がありますか?


4
alt-bとalt-f(およびその他のreadlineキー)を試してみることをお勧めします。これらはより普遍的であり、多くのコマンドラインプログラムがreadlineバインディングを尊重しているためです。
おとなしそうな

回答:


21

おそらく、アップグレード時に失われたローカル~/.inputrcまたはグローバル/etc/inputrcファイルが定義されていた可能性があります。簡単な修正方法は~/.inputrc、次の行を含むファイルを作成することです。

## enable Alt-arrows 
"\e[1;3D": backward-word ### Alt left
"\e[1;3C": forward-word ### Alt right

これらはxtermand terminatorで動作しgnome-terminalますが、他の端末用に調整する必要があるかもしれません。残念ながら、各端末エミュレータは異なる構文を使用できます。詳細については、こちらの回答をご覧ください


私は本当にAltを意味していましたが、それでもリモートマシンで動作します。Ctrl + Left / RightはすでにRxvtでタブを左右に移動するために使用されています(Shift + Left / Rightでタブを切り替え、Shift + Downで新しいタブを開きます)。
アロイスマーダル14年

1
ちなみに、Ctrl +左/右はGUIエディターでは一般的ですが、端末はまったく別の世界であり、その組み合わせはまだ見ていません。
アロイスマーダル14年

10

terdonは私を正しい方向に設定しました:inputrcファイル。

原因は非常に直感的ではないため、readline6は実際は/ etc / inputrcの代わりに〜/ .inputrcを使用しているため、readline(3)は強調も反論もしていません。

このファイルの名前は、INPUTRC環境変数の値から取得されます。その変数が設定されていない場合、デフォルトは〜/ .inputrcです。そのファイルが存在しないか、読み取ることができない場合、最終的なデフォルトは/ etc / inputrcです。

したがって、両方のDebianマシンでは/ etc / inputrcはlibreadline6パッケージで提供されるものと同じですが(バージョンも同じです)、新しいマシンでは〜/ .inputrcが1行で存在しますset bell-style none。このファイルが削除されると、すべて正常に機能します(以下の注を参照)。

明日までFedoraをチェックすることはできませんが、同じ問題だと思います。更新: Fedoraでは、〜/ .inputrcは存在しませんでしたが、ここでは/ etc / inputrcが単に異なるため、これを定義しない場合があります。ホットフィックスとして、Debianのinputrcを〜/ .inputrcとして保存しました。


ノート:

7> 8アップグレード中にどのように変更されたのかという謎は未解決のままですが、一部は私の悪い記憶といくつかの意図しないドットファイルのジャグリングに起因する可能性があります。(ところで、それはAPTのアップグレードではなく、再インストールと手動のドットファイルの移動だったので、〜.inputrcが何らかの形で邪魔をしたかもしれません。)

また、OKと言うと、Rxvtを除くすべての場所でCtrlで動作することを意味します(OK、xfce4-terminalのみをチェックしましたが、Rxvtは通常の反逆者であることがわかっています) -特定の機能-リスト内のアクティブなタブを移動します。

マンページで言及しているように、bashを使用すると、組み込みのbindコマンドを使用して、現在持っているものを調査できます。


ナイスキャッチ、+ 1。実際、あなたが思っているよりも直感的です。デフォルトの動作では、ユーザー固有のドットファイルがシステム全体のデフォルトよりも優先されます。そうしないと、ユーザーは設定を変更できません。
テルドン

Alt +矢印を具体的に有効にする方法については、更新された回答を参照してください。
テルドン

2
これは正常な動作です。読みたい場合$include /etc/inputrcは、一番上にある必要があり~/.inputrcます。
クリスダウン14年

@terdonシステム全体の前にユーザー設定を好むことは完全に理にかなっていますが、私がより直感的に思うのは〜/ .initrcが/ etc / initrcに「マージ」されることです(つまり/ etc / initrcは$includedデフォルトで)。
アロイスマーダル14年

1
参照:1.ハードコーディングされたオプション、2。/ etc / initrc、3。〜/ .initrc --vs-- 1.ハードコーディングされたオプション2. / etc / initrcまたは〜/ .initrc。最初の方法は、より低いレベルに簡単に拡張できるため、はるかに柔軟です(たとえば、プロジェクトごとに、この例はreadlineではあまり意味がありませんが、ポイントを得ることができます)。
アロイスマーダル14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.