smzht / fakeymacs

Emacs-like key bindings for Keyhac
MIT License
112 stars 49 forks source link

VSCode でも使える Emacs キーバインドに機能強化する #5

Closed smzht closed 4 years ago

smzht commented 4 years ago

VSCode で Awesome Emacs Keymap 並に利用できる Emacs キーバインドに機能強化していきます。 とりあえず、次の機能をサポートしました。

develop branch で開発中です。

対応内容はこちらにもコメントしています。

smzht commented 4 years ago

次の機能のサポートを追加しました。

 ※ VSCode に vscode-dired Extension をインストールしてください  ※ Ctrl+x f に設定されているキーバインドは、Ctrl+x(Cut)の機能とバッティングするので、削除してください(Open Keybord Shortcuts コマンドで削除可能です)

smzht commented 4 years ago

次の機能をサポートしました。

このキーバインドは、VSCode 標準のキーバインドですが、日本語 Windows OS では Ctrl と組み合わせた BackQuote の返すキーコードが BackQuote ではなくなるため、正常に動作していませんでした。これを改善しています。 また、このキーを発行することにより、Fakeymacs が VSCode の Terminal(WSL/WSL2 を前提)に入ることを認識できます。この仕組みを使って、Terminal 内で次のキーを押下した際のキーの挙動を変更(キーの変換をせずにダイレクトに発行)するようにしています。

逆に、Terminal から抜けることの認識には、以下のキーが押下されることを利用しています。

これで、Terminal で Ctrl+k が使えない(Ctrl+q Ctrl+k と入力する必要がある)問題をある程度回避できるのではないかと思います。 なお、マウスのクリックでカーソル位置の変更を行うと、この状態の認識に齟齬が発生することがあります。この場合は、上記の3種類のキーを押下することにより、Fakeymacs に現在の状態を再認識させるようにしてください。

以上についても、develop branch にコミットしています。

smzht commented 4 years ago

上記コメントの機能(VSCode の Terminal で WSL 用のキー変換を行う)を使うかどうかを指定する変数(use_vscode_wsl_key_conversion)を導入し、初期値を False(使わない)にしました。仕様を理解した方のみ使う機能とするための対応です。

smzht commented 4 years ago

US キーボード前提でコメントを記載していました。Ctrl+BackQuote の記載部分は、日本語キーボードの場合、Ctrl+半角/全角 で動作します。日本語キーボードの場合の Toggle Integrated Terminal のショートカットは C-@ となっていますが、これは Emacs キーバインドで set_mark_command に割り当てられています。このショートカットに手を入れるかは、別途検討します。

smzht commented 4 years ago

次の機能をサポートしました。

Terminal に移行すること Fakeymacs に認識させるために作成したものです。 前者2つは日本語キーボード用、後者1つは英語キーボード用です。この機能をサポートするために use_ctrl_atmark_for_mark 変数を導入し、日本語キーボードで C-@ をマーク用のキーとして使うかどうかを指定できるようにしました。初期値は False(使わない)です。

smzht commented 4 years ago

use_vscode_wsl_key_conversion 変数の名称を use_vscode_terminal_key_direct_input に変更しました。

smzht commented 4 years ago

develop branch を master branch に merge しました。

smzht commented 3 years ago

本 issue に関する情報を以下にまとめました。 https://github.com/smzht/fakeymacs#vscode-%E3%81%AE%E6%A9%9F%E8%83%BD%E5%BC%B7%E5%8C%96%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6