WSLのTABからCtrl-iを分離する方法は?

WSLのTABからCtrl-iを分離する方法は?

私はUbuntuのWSL2でbashを使用しており、Crtl-iとTABに異なるキーコードを送信させ、インデントにTABを使用している間にemacsでCtrl-iを再マップできるようにしたいと思います。以下の回答に従ってみました。この問題.Xresources、ファイルを編集してから実行してCtrl-iを再マップすることをお勧めしますxrdb ~/.Xresources。私のファイル.Xresourcesにこれがあります。

XTerm*metaSendsEscape: true
XTerm*eightBitInput: false

Xterm*Translations: #override\
        Ctrl ~Meta ~Shift <Key>i :string("\033[105;5u")

私が電話したときを除いて、xrdb .Xresourcesこのメッセージだけを与えます。

xrdb: Connection refused
xrdb: Can't open display 'localhost:0.0'

これは、WSLがプレーンテキストエディタであるため、ファイルの変更が適用されなかったためです。 xtermを使用していることを確認するためにbashでこれを実行し、echo $TERMそれが返されたので、xterm-256colorこれは正しいようです。

WSLで使用できる方法はありますか?.Xresourcesそれとも、WSLでCtrl-iとTABを区別する別の方法がありますか?

ベストアンサー1

良い研究を行いましたが、WSLの端末状況について誤解があります。

あなたがリンクした質問/回答には、これらのガイドラインが具体的に記載されていxrdbますxterm。使用できる端末は多様で、端末ごとにリマッピング方法が異なります。この特定の回答は、3つの異なる端末に対する解決策も提供します。

  • Xterm
  • Urkesft

でもそうだけど可能WSLで端末を使用するには(この回答の最後を参照)、これらの端末のいずれもデフォルトのWSL端末ではありません。 WSL には 2 つの基本端末があります。

  • Windows 10では、従来のWindowsコンソールホストです。 CMDとPowerShellで使用されているのと同じ端末です。
  • Windows 11では、(かなり)新しいWindows端末がコンソールホストを置き換えます。以前のバージョンと比較してかなり進化しており、多くの追加機能が含まれています。端末はWindows 10にもインストールできますが、デフォルトでは設定できません。

したがって、次のガイドラインが必要です。端末実際にはWSL用ではないものを使用しています。

私が知っている限り、Windowsコンソールホストには重要な再マッピング機能は含まれていません。ただし、次のようなものを使用できます自動ショートカットまたは(おそらく)自動的にCtrl+を傍受し、i正しいエスケープシーケンスを送信します。少なくともAutoHotkeyにはこの機能があるようですが、この目的で使ったことはありません。

ただし、まだインストールしていない場合は、Windows端末をインストールすることをお勧めします。 Windows 10用のMicrosoft Storeにあります(最新のWindows 11バージョンでは自動的にインストールされます)。

これにはキーを再マップする機能が含まれていますが、設定ファイルの後ろに多少「隠されています」。端末にはいくつかの設定を編集するためのGUIが含まれていますが、これらの高度な機能には手動編集が必要ですsettings.json

そのために:

  • Windows端末でドロップダウンメニューに移動して開きます。設定

  • 設定の左下から「JSONファイルを開く」オプション。

  • 注:VSCodeをインストールするか、少なくともJSONを処理できるエディタをインストールすることをお勧めします。 VSCodeのもう1つの利点は、Windowsターミナルアーキテクチャを理解しているため、入力時にオプションを自動補完することです。

  • リストに以下を追加します"actions"

    {
        "command": {
            "action": "sendInput",
            "input": "\u001b[105;5u"
        },
        "keys": "ctrl+i"
    }
    

Emacsはこれをテストしていませんが、Fishシェルでfish_key_reader+がタブ文字の代わりに指定された制御コードを送信するCtrlことを確認しました。i

WSLでLinux/X端末を使用する

Linux端末の1つを実際に使用するには、WSLを使用するだけです。 WSLgをサポートするWindows 11(WSL2でLinux GUIアプリケーションを実行可能)を使用するか、Windows 10で詳しく説明されている方法のいずれかを使用してGUIサポートを構成します。このスーパーユーザーの答え。これを完了したら、必要に応じてXtermを実行し、リンクされた回答の指示を使用できます。

おすすめ記事