Windows 10 Linux bash シェル Ctrl + Space で Emacs にマークが設定されない

Windows 10 Linux bash シェル Ctrl + Space で Emacs にマークが設定されない

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。)

  1. OpenSSH サーバーを でインストールしますsudo apt-get install openssh-server。すでにインストールされている場合は、削除 ( sudo apt-get remove openssh-server) してから再インストールし、設定ファイルをリセットします。
  2. 編集するsshd_config は、ファイル(sudo を使用)を次のように実行します。

    • コメントされていない行設定がある場合はPermitRootLogin、コメントアウトします。 行を追加しますPermitRootLogin no
    • 行を追加しAllowUsers USERNAME、USERNAME を Linux ユーザー名に置き換えます (ユーザー名がわからない場合は、whoamiBash プロンプトでコマンドを実行します)。
    • 理想的には、SSH キーを使用してパスワードなしの認証を設定する必要がありますが、その方法はこの質問の範囲外です (多くのガイドが利用可能です。Web で「passwordless ssh-keygen」を検索してください)。それまでの間、行を追加するか、コメントを解除してくださいPasswordAuthentication yes
    • 設定しますUsePrivilegeSeparation no。おそらくファイル内に という行が見つかるでしょうUsePrivilegeSeparation yes。 をyesに変更しnoて保存するだけです。sshd_config は、ファイル。

    ここで何か問題が発生した場合は、手順 1 を繰り返してファイルを復元できます。

  3. コマンドで SSH サーバーを起動しますsudo service ssh --full-restart
  4. PuTTYを使用する(ダウンロードここ)、localhostホスト名フィールドでログインし、その他はすべてデフォルトのままにします。Linux ユーザー名とパスワードの入力を求められます。
  5. 実行しますemacs。Ctrl + スペースを押すと、希望どおりにマークが設定されます。

(上記の手順はない、単独では、システムがSSH接続を受け入れることができるようになります。他のホスト。これを行うには、Windows ファイアウォール ルールを変更して、受信 TCP ポート 22 を許可する必要もあります。

別の答え「しかし、PuTTY はローカル ターミナルではありません」とおっしゃいました。このように使用できることを知らなかったのか、それともローカル ターミナルに比べてオーバーヘッドが大きいため PuTTY を却下したのかはわかりませlocalhostん。後者の場合、心配する必要はありません。対話型 SSH セッションは負荷が非常に軽いからです。(確かに多くのX Window System を実行するよりも負荷が少ないため、GUI Emacs や xterm を実行できます。

この方法で実行する場合、通常のターミナルと比較して唯一の欠点は、貼り付けイベントが文字ごとに送信されることです。これは、クリップボードの内容を非常に速く入力した場合と同様であり、これにより、エレクトリックペア、インデント、スニペットの拡張などが実行される可能性があります。(貼り付けはない進行中の貼り付けを検出し、貼り付けが完了するまでキーコードを無効にするロジックがあるため、キーコード コマンドが実行されます。

また、標準の Bash ターミナルに比べて、少なくとも 1 つの大きな利点があります。マウス イベントは、Emacs が応答できる形式で PuTTY によってサポートされているため、皮肉なことに、ローカル ターミナルではマウスでポイントを移動できない場合でも、PuTTY ではマウスでポイントを移動できます。

答え2

私はConEmuを使用しています。エレガントな方法はありませんが、マクロを使用して解決できます。

  1. 「設定」を開きます(上部のアイコンをクリックします)。
  2. 「キーとマクロ」をクリックします。
  3. 右側で、「マクロ 01」~「マクロ 32」オプションが表示されるまで下にスクロールし、使用可能なオプションを 1 つ選択します (どれでもかまいません)。
    では、マクロ01この例では。
  4. 最初のドロップダウンメニューで「スペース」を選択します。
  5. 2番目のドロップダウンメニューで「Ctrl」を選択します。残りの 2 つのドロップダウン メニューはそのままにしておきます。
  6. 以下に貼り付けてください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")
    
  7. 上記は基本的にM-x select-mark-command文字列を emacs に送信します。次に「設定を保存」をクリックします。


最終的には次のようになります。

ここに画像の説明を入力してください

答え3

このプロジェクトでは、MinTTY を代替ターミナルとして使用できるようになります。https://github.com/mintty/wslttyこれは PuTTY から派生したものですが、SSH は必要ありません。また、PuTTY と同様に、Ctrl キーとスペース キーを問題なく処理します。

答え4

この問題は修正されましたWindows 10 ビルド 14965。 チェック:

[Environment]::OSVersion

アップデートをまだインストールしていない場合はインストールしてください。

関連情報