私は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を実行し、リンクされた回答の指示を使用できます。