Windows 10では、Linux Bashのサブシステムをインストールしました。しかし、Emacsのショートカットに問題があります Ctrl+space マークポイントを設定しません。
私が試したことと役に立たなかったこと:
Windowsコンソールのプロパティメニューで[Ctrlキーのショートカットを有効にする]をオフにしてみました
別の端末のConEmuを使用しようとしましたが、成功しませんでした。
これは何らかの方法でctrl + spaceで同様の問題を抱えているubuntuに関連しているかどうか、WindowsのLinux bashはubuntuリポジトリを使用しています。
この記事の執筆時点(2016年9月1日)で、Ctrl-SpaceをBashターミナルに通すという意味では、これに対する解決策はありません。しかし、多くのユーザーには十分な回避策があります。PuTTYを使用してSSH経由で接続すると、Ctrl-Spaceの処理が強制されます。 (ttyモードでは、Ctrl-SpaceとCtrl- @は同じ文字コードであるため区別できませんが、Emacsはデフォルトでset-mark-command
を処理するように設定されているため、問題にはなりません。 。)
Sudo apt-get install openssh-server
でインストールします。すでにインストールされている場合は、それを削除し(Sudo apt-get remove openssh-server
)、再インストールして構成ファイルをリセットします。/ etc/ssh/sshd_configファイル(Sudoを使用)を次のように編集します。
PermitRootLogin
がある場合は、コメント化します。行PermitRootLogin no
を追加します。AllowUsers USERNAME
を追加し、USERNAMEをLinuxユーザー名に置き換えます(それがわからない場合は、Bashプロンプトでwhoami
コマンドを実行してください)。PasswordAuthentication yes
という行を追加するか、コメントを外してください。UsePrivilegeSeparation no
;おそらく、ファイル内にUsePrivilegeSeparation yes
;という行があります。 yes
をno
に変更し、/ etc/ssh/sshd_configファイルを保存するだけです。ここで問題が発生した場合は、手順1を繰り返してファイルを復元できます。
Sudo service ssh --full-restart
を使用してSSHサーバーを起動します。localhost
を使用してログインします。その他はすべてデフォルトのままにします。 Linuxユーザー名とパスワードの入力を求められます。emacs
を実行します。 Ctrlキーを押しながらスペースを押すと、必要に応じてマークが設定されます。(上記の手順はしないだけで、システムがotherホスト。これを行うには、Windowsファイアウォールルールを変更して、インバウンドTCPポート22を許可するようにする必要があります。)
別の答え で、「しかし、PuTTYはローカル端末ではありません。」このようにlocalhost
を使用できることに気付いていなかったのか、またはローカル端末に比べてオーバーヘッドが大きいためにPuTTYを却下していたのかどうかはわかりません。後者の場合、私は心配しません。インタラクティブなSSHセッションは非常に軽量な負荷です。 (それは確かにX Window Systemを実行するよりもはるかに負荷が少ないので、GUI Emacsまたはxtermを実行できます!)
ストレートターミナルに対してこの方法を実行することの唯一の本当の欠点は、クリップボードの内容を非常に速く入力したかのように、貼り付けイベントが文字ごとに送信されることです。火。 (貼り付けはしないでください進行中の貼り付けを検出し、貼り付けが完了するまでキーコードを無効にするロジックがあるため、キーコードコマンドを起動します。)
また、標準のBashターミナルに比べて少なくとも1つの非常に大きな利点もあります。マウスイベントは、Emacsが応答できる形式でPuTTYによってサポートされているため、皮肉にも、PuTTYでマウスを使ってポイントを移動できます。ローカル端末で。
私はConEmuを使用しています。エレガントな方法はありませんが、マクロを使用して解決できます。
☰
アイコンをクリックします)。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に送信します。次に[設定を保存]をクリックします。
最終的には次のようになります。
このプロジェクトでは、代替ターミナルとしてMinTTYを使用できます: https://github.com/mintty/wsltty 。 PuTTYから派生していますが、SSHは必要ありません。そしてPuTTYのように、それはCtrl-スペースをうまく処理します。
実行中showkey -a
windows/ubuntu-bashコンソールで、ctrl + spaceが単純なスペースを送信していることを示しています。
そして、それは他のLinuxマシンへのsshセッションと同じ問題ですctrl +スペースはプレーンスペースとして送信されます。
同じ動作が他のWindowsベースの端末(conemu、consolez、MobaXTerm)でも発生します。ただし、PuTTYはこれを適切に処理できますが、PuTTYはローカル端末ではありません。
Windows端末には、一部のシーケンスのマッピングがないと思います。同じ問題がctrl + 1 ctrl + 2 ..などの他の組み合わせでも発生します。たとえば、PuTTYなどのキーボードマッピングを処理できる端末が必要です。
この問題は、Windows bashターミナルの今後のリリースで修正されるはずです。
X Server for Windowsをインストールできるので、ハックがあります。
最初のインストール xming for Windows
2 xmingを開始
3 Windows bashインストールから
Sudo apt-get install rxvt-unicode-256color
4次にcmd.exe
を開いて実行します
bash.exe -c "urxvtd -q -o -f; bash"
今私たちはbashコンソールにいて実行します
(DISPLAY=:0 urxvtc &)
5この時点で、Xmingに新しいターミナルが表示されているはずです。そして、端末モードでemacsを実行できます。
emacs -nw
そして今、すべてのバインディングはうまく機能します
関連するディスカッションはこちら https://github.com/Microsoft/BashOnWindows/issues/531