smzht / fakeymacs

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

C-sは検索ではなく保存したい #20

Closed DaikiSuganuma closed 2 years ago

DaikiSuganuma commented 2 years ago

C-sは共通で保存する処理にしたいとconfig_personal.pyの[section-base-2]に

define_key(keymap_emacs, "C-s", reset_search(reset_undo(reset_counter(reset_mark(save_buffer)))))

としましたが、isearch_forwardの文字列検索になってしまうようです。 どう記述すればよろしいでしょうか?

もしくはconfig.pyに設定されたキーバインドを解除する方法はありますでしょうか?

smzht commented 2 years ago

上記設定で動く筈ですが、設定のリロードはされているでしょうか?

なお、config.pyに設定されたキーバインドを解除には、config_personal.py の fc.skip_settings_key の "keymap_emacs" の行を

    "keymap_emacs" : ["C-s"], 

とする方法があります。お試しください。

DaikiSuganuma commented 2 years ago

お返事ありがとうございます! config_personal.py の [section-base-1]内の元々あったfc.skip_settings_keyに設定しました。 設定リロード後に

skip setting key : [key_emacs] C-s

が内部ログに表示されましたが、動作変わらずでした。

右Ctrl-sだと思ったように動きます。 左Ctrl-sだと文字列検索となってしまいます(ChromeとVSCodeで確認)。

何か設定が違うのでしょうか? 私の設定はこちらです。 https://github.com/DaikiSuganuma/fakeymacs

smzht commented 2 years ago

原因が分かりました。

Fakeymacs では デフォルトで vscode_key 拡張機能が有効となっており、その拡張機能の中で keymap_emacs を拡張した keymap_vscode を定義しています。VSCode や Chrome 系ブラウザは、この keymap が有効となっていますので、こちらの設定も変更する必要があります。

keymap_vscode には fc.skip_settings_key による設定を無効にする仕組みはありませんので、fakeymacs_extensions/vscode_key のフォルダに config_personal.py を作成し、この中で C-s に対する define_key の設定を行ってください。

もし vscode_key 拡張機能自体を使っていないのであれば、トップフォルダにある config_personal.py の中で vscode_key 拡張機能自体を無効にする方法もあるかと思います。

以上、確認よろしくお願いします。

DaikiSuganuma commented 2 years ago

設定できました! config_personal.pyのVSCode用のフラグを0にしました。

# VSCode 用のキーの設定を行う
if 0:

ご丁寧に説明いただきありがとうございました! またとても便利なソフトを公開いただき重ねてお礼申し上げます。

smzht commented 2 years ago

config_personal.py 内の fc.skip_settings_key の設定で、keymap_vscode のキー設定をスキップする機能を追加してみました。

よければお試しください。

DaikiSuganuma commented 2 years ago

ありがとうございます!試してみます!