
CtrlWindows 10 に Subsystem for Linux Bash をインストールしました。しかし、Emacs +のショートカットでspaceマーク ポイントが設定されないという問題があります。
試してみたが役に立たなかったこと:
Windowsコンソールのプロパティメニューで「Ctrlキーのショートカットを有効にする」のチェックを外してみた
別の端末 ConEmu を使用しようとしましたが、成功しませんでした。
これは、Ctrl + スペースで同様の問題を抱えている Ubuntu と何らかの関連があり、Windows Linux Bash は Ubuntu リポジトリを使用しているのではないかと思います。
答え1
ここにはないソリューションこの記事の執筆時点 (2016 年 9 月 1 日) では、Ctrl-Space を Bash ターミナルに渡すという点では、これより優れていますが、多くのユーザーにとって十分な回避策があります。PuTTY を使用して SSH 経由で接続し、Ctrl-Space の処理を強制します。(tty モードでは、Ctrl-Space と Ctrl-@ は同じ文字コードであるため区別できませんが、デフォルトでは Emacs がそのように処理するように設定されているため、問題にはなりませんset-mark-command
。)
- OpenSSH サーバーを でインストールします
sudo apt-get install openssh-server
。すでにインストールされている場合は、削除 (sudo apt-get remove openssh-server
) してから再インストールし、設定ファイルをリセットします。 編集するsshd_config は、ファイル(sudo を使用)を次のように実行します。
- コメントされていない行設定がある場合は
PermitRootLogin
、コメントアウトします。 行を追加しますPermitRootLogin no
。 - 行を追加し
AllowUsers USERNAME
、USERNAME を Linux ユーザー名に置き換えます (ユーザー名がわからない場合は、whoami
Bash プロンプトでコマンドを実行します)。 - 理想的には、SSH キーを使用してパスワードなしの認証を設定する必要がありますが、その方法はこの質問の範囲外です (多くのガイドが利用可能です。Web で「passwordless ssh-keygen」を検索してください)。それまでの間、行を追加するか、コメントを解除してください
PasswordAuthentication yes
。 - 設定します
UsePrivilegeSeparation no
。おそらくファイル内に という行が見つかるでしょうUsePrivilegeSeparation yes
。 をyes
に変更しno
て保存するだけです。sshd_config は、ファイル。
ここで何か問題が発生した場合は、手順 1 を繰り返してファイルを復元できます。
- コメントされていない行設定がある場合は
- コマンドで SSH サーバーを起動します
sudo service ssh --full-restart
。 - PuTTYを使用する(ダウンロードここ)、
localhost
ホスト名フィールドでログインし、その他はすべてデフォルトのままにします。Linux ユーザー名とパスワードの入力を求められます。 - 実行します
emacs
。Ctrl + スペースを押すと、希望どおりにマークが設定されます。
(上記の手順はない、単独では、システムがSSH接続を受け入れることができるようになります。他のホスト。これを行うには、Windows ファイアウォール ルールを変更して、受信 TCP ポート 22 を許可する必要もあります。
で別の答え「しかし、PuTTY はローカル ターミナルではありません」とおっしゃいました。このように使用できることを知らなかったのか、それともローカル ターミナルに比べてオーバーヘッドが大きいため PuTTY を却下したのかはわかりませlocalhost
ん。後者の場合、心配する必要はありません。対話型 SSH セッションは負荷が非常に軽いからです。(確かに多くのX Window System を実行するよりも負荷が少ないため、GUI Emacs や xterm を実行できます。
この方法で実行する場合、通常のターミナルと比較して唯一の欠点は、貼り付けイベントが文字ごとに送信されることです。これは、クリップボードの内容を非常に速く入力した場合と同様であり、これにより、エレクトリックペア、インデント、スニペットの拡張などが実行される可能性があります。(貼り付けはない進行中の貼り付けを検出し、貼り付けが完了するまでキーコードを無効にするロジックがあるため、キーコード コマンドが実行されます。
また、標準の Bash ターミナルに比べて、少なくとも 1 つの大きな利点があります。マウス イベントは、Emacs が応答できる形式で PuTTY によってサポートされているため、皮肉なことに、ローカル ターミナルではマウスでポイントを移動できない場合でも、PuTTY ではマウスでポイントを移動できます。
答え2
私はConEmuを使用しています。エレガントな方法はありませんが、マクロを使用して解決できます。
- 「設定」を開きます(
☰
上部のアイコンをクリックします)。 - 「キーとマクロ」をクリックします。
- 右側で、「マクロ 01」~「マクロ 32」オプションが表示されるまで下にスクロールし、使用可能なオプションを 1 つ選択します (どれでもかまいません)。
では、マクロ01この例では。 - 最初のドロップダウンメニューで「スペース」を選択します。
- 2番目のドロップダウンメニューで「Ctrl」を選択します。残りの 2 つのドロップダウン メニューはそのままにしておきます。
以下に貼り付けてくださいGUIマクロ分野:
keys("\e");keys("x");keys("s");keys("e");keys("t");keys("-");keys("m");keys("a");keys("r");keys("k");keys("-");keys("c");keys("o");keys("m");keys("m");keys("a");keys("n");keys("d");keys("\n")
上記は基本的に
M-x select-mark-command
文字列を emacs に送信します。次に「設定を保存」をクリックします。
最終的には次のようになります。
答え3
このプロジェクトでは、MinTTY を代替ターミナルとして使用できるようになります。https://github.com/mintty/wslttyこれは PuTTY から派生したものですが、SSH は必要ありません。また、PuTTY と同様に、Ctrl キーとスペース キーを問題なく処理します。
答え4
この問題は修正されましたWindows 10 ビルド 14965。 チェック:
[Environment]::OSVersion
アップデートをまだインストールしていない場合はインストールしてください。