web-dev-qa-db-ja.com

bashでチルダを入力したいのですが、F10キーを押すと、「〜」ではなく「1〜」が表示されます。

以前は、を押すことで、bashターミナルにチルダ記号を出力できました。 F10。今私が押すと F10 私は2つの文字を取得します:1~。同じことが言えます F9/F11/F12。奇妙なことに、他のファンクションキー F1-F8 チルダをくださいが、欲しいです F10 私のチルダの鍵になります。

これを修正する方法はありますか?

1
user3055163

それらのキーはどれもチルダキーではありません。それらはすべて、_ESC [24~_などの複数の文字シーケンスを生成します。 F12 キー、または_ESC [15~F5 キー(F1〜F4はわずかに異なりますが)、または_ESC [5~PgUp キー。

チルダをgetする唯一の理由は、Bashのキーシーケンスパーサーが認識している共通部分(_ESC [2_)を消費し、停止完全なシーケンスが不明になることがわかるとすぐに。それに続くすべて(必ずしもチルダではありません!)は個別に解釈されます。

この動作は端末ベースのプログラム間で異なる場合があることに注意してください。Bash(readline)には特別なキーを解釈するための独自のコードがあり、Vimには独自のコードがあり、Irssiには再び独自のコードがあります。一部のプログラムは、キー押下をF10として完全に認識する場合があります(したがって、無視します)。


作る F10 実際のチルダキーグローバル(OS全体)で、「キーリマッパー」ツール(おそらくAutoHotkey)を検索します。


作る F10 すべてのターミナルベースプログラムのチルダキーで、ターミナルの設定を検索します。 (この場合の「端末」はConEmuを指します。)

ターミナルmightには、単一のキーを再定義したり、「マクロ」を作成したりするための独自の機能があります。 (ConEmu documentation は、print(…)アクションでマクロを定義することを提案しています。)


作る F10 Bashのチルダキー(ただしBashのみ):

  1. ターミナルエミュレータ(ConEmu)がF10を独自の機能にバインドしていないことを確認してください。 (通常、プレーンF10は何にもバインドされていませんが、Shift + F10は「右クリック」メニューを開くための標準キーです。)

  2. Bashで、を押します CtrlV (リテラル挿入)およびthen F10。 _^[[21~_のようなシーケンスが表示されます。

    (最初の_^[_はESCを表し、残りは単なるリテラル記号です。)

    この時点で、キーがシーケンスをまったく挿入しない場合、つまり、端末自体または別のプログラムによって引き継がれていることを意味します–手順1に戻ります。

  3. _~/.inputrc_ファイルをテキストエディタで開きます(または作成します)。

  4. この行を追加し、手順2のシーケンスを取得して、_^[_を_\e_に置き換えます。

    _"\e[21~": "~"
    _

    これは、_~_を受信すると、inputrcに_ESC [21~_を挿入するように指示します。

  5. Bashシェルを再度開きます(またはを押します CtrlX、 CtrlR inputrcをリロードします)。

8
user1686

使用しているキーボードレイアウトは何ですか?

専用のチルダがあります ~ すぐ上のキー Tab 標準のUSキーボード。

enter image description here

1
Art Gertner