Skip to content

Latest commit

 

History

History

vscode_key

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Fakeymacs extension - vscode_key -

■ VSCode 用のキーの設定を行う

VSCode 用のキーの設定を行う拡張機能です。AI Code Editor の Cursor にも対応しています。

コンフィグレーションパラメータ

Configuration parameterDescription
fc.vscode_targetVSCode 用のキーバインドを利用するアプリケーションソフト(ブラウザアプリを除く)を指定する
fc.cursor_targetCursor 用のキーバインドを利用するアプリケーションソフトを指定する
fc.vscode_browser_targetVS Code Web の画面で VSCode 用のキーバインドを利用するブラウザアプリを指定する
fc.vscode_prefix_key置き換えするプレフィックスキーの組み合わせ(VSCode のキー、Fakeymacs のキー)を指定する(複数指定可)
fc.cursor_prefix_key置き換えするプレフィックスキーの組み合わせ(Cursor のキー、Fakeymacs のキー)を指定する(複数指定可)
fc.vscode_replace_key置き換えするキーの組み合わせ(VSCode のキー、Fakeymacs のキー)を指定する(複数指定可)
fc.cursor_replace_key置き換えするキーの組み合わせ(Cursor のキー、Fakeymacs のキー)を指定する(複数指定可)
fc.use_ctrl_atmark_for_mark日本語キーボードを利用する際、VSCode で C-@ をマーク用のキーとして使うかどうかを指定する
fc.use_direct_input_in_vscode_terminalパネルのターミナル内で4つのキー(C-k、C-r、C-s、C-y)のダイレクト入力機能を使うかどうかを指定する
fc.terminal_list_for_direct_inputターミナルをエディタ領域で使う際、ダイレクト入力機能を使うターミナルの種類を指定する
fc.esc_mode_in_keyboard_quitkeyboard_quit 関数コール時の Esc キーの発行方法を指定する

※ fc.vscode_browser_target 変数は、ブラウザで VS Code Web の画面にアクセスした際(vscode.dev にアクセス したとき等)に、VSCode 用のキーバインドを利用できるようにするための設定です。

※ fc.vscode_prefix_key 変数は、VSCode のプレフィックスキーを使う際、後に入力した文字が全角文字で 入力されることがある問題を対策するために設けた設定です。

※ fc.cursor_prefix_key 変数は、Cursor のプレフィックスキーを使う際、後に入力した文字が全角文字で 入力されることがある問題を対策するために設けた設定です。

※ fc.use_ctrl_atmark_for_mark 変数は、VSCode で C-@ を Toggle Terminal 用のキーとして使えるように するために設けた設定です。 初期値は False としており、C-@ を Toggle Terminal 用のキーとして使えるようにしています。 True に設定した場合でも Toggle Terminal 用のキーとして C-<半角/全角> が使えます。

※ fc.use_direct_input_in_vscode_terminal 変数は初期値を False(使わない)としており、 仕様を理解した方のみ使う機能としています。fc.use_direct_input_in_vscode_terminal 変数を True に した際の仕様については、以降の説明を参照してください。 なお、2025/01/21 に実施したエンハンス対応により、VSCode の settings.json に window.title の設定を 行えば、fc.use_direct_input_in_vscode_terminal 変数を True にする必要がなくなりました。window.title の設定についても以降の説明を参照してください。

※ fc.esc_mode_in_keyboard_quit 変数の設定値には、次のいずれかの値を指定できます。

  • 1:Esc キーを常に発行する
  • 2:C-g を2回連続して押下した場合に Esc キーを発行する

設定値 2 の利用は、VSCode で Jupyter Notebook を使う場合などを想定しています。 設定値 1 の場合でも、C-A-g キーにより Esc キーを発行しない keyboard_quit を利用できます。

VSCode 全般のキーバインド

● VSCode 用プレフィックスキーの置き換え設定

VSCode’s prefix keyFakeymacs’s prefix keyDescription
fc.vscode_prefix_key[n][0] の設定値fc.vscode_prefix_key[n][1] の設定値初期値:C-k → C-A-k

※ Fakeymacs のプレフィックスキーを利用することにより、プレフィックスキーの後に入力するキーが 全角文字で入力されることが無くなります。

● キーの置き換え設定

VSCode’s keyFakeymacs’s keyDescription
fc.vscode_replace_key[n][0] の設定値fc.vscode_replace_key[n][1] の設定値初期値:無し

● 「ファイル操作」のキー設定

KeybindFunctionVSCode CommandDescription
Ctl-x C-ffind_fileFile: Open File…Fakeymacs 標準機能(参考記載)
Ctl-x C-dfind_directoryFile: Open Folder…
Ctl-x C-rrecentfFile: Open Recent…
Ctl-x C-llocateGo to File…

● 「カーソル移動」のキー設定

KeybindFunctionVSCode CommandDescription
M-g pprevious_errorGo to Previous Problem in Files (Error, Warning, Info)
M-g M-pprevious_errorGo to Previous Problem in Files (Error, Warning, Info)
M-g nnext_errorGo to Next Problem in Files (Error, Warning, Info)
M-g M-nnext_errorGo to Next Problem in Files (Error, Warning, Info)
Ctl-x `next_errorGo to Next Problem in Files (Error, Warning, Info)

● 「バッファ / ウィンドウ操作」のキー設定

KeybindFunctionVSCode CommandDescription
Ctl-x kkill_bufferView: Close Editorアプリ版 VSCode であれば、A-k も利用可能
Ctl-x bswitch_to_bufferView: Quick Open Privious Recently Used Editor in Group
Ctl-x C-blist_buffersView: Show All Editors By Most Recently Used

● 「エディタ操作」のキー設定

KeybindFunctionVSCode CommandDescription
Ctl-x 0delete_windowView: Close All Editors in Group
Ctl-x 1delete_other_windowsView: Close Editors in Other Groups
Ctl-x 2split_window_belowView: Split Editor Orthogonal
Ctl-x 3split_window_rightView: Split Editor
Ctl-x 4rotate_layoutToggle Vertical/Horizontal Editor Layout
Ctl-x oother_windowView: Navigate Between Editor Groups
C-<数字キー>switch_focus(<数字キーの値>)View: Focus Side Bar or n-th Editor Group
C-A-<数字キー>switch_focus(<数字キーの値>)View: Focus Side Bar or n-th Editor Group

※ C-<数字キー> は、fc.use_ctrl_digit_key_for_digit_argument 変数が False(初期値)の場合に機能します。 True の場合(C-<数字キー> は数引数の指定用として使われる)には、代わりに C-A-<数字キー> が機能する ようにしています。

● 「矩形選択 / マルチカーソル」のキー設定

KeybindFunctionVSCode Command or Command IDDescription
C-A-pmark_previous_linecursorColumnSelectUp
C-A-nmark_next_linecursorColumnSelectDown
C-A-bmark_backward_charcursorColumnSelectLeft or cursorLeftSelect
C-A-fmark_forward_charcursorColumnSelectRight or cursorRightSelect
C-A-S-bmark_backward_wordcursorWordLeftSelect
C-A-S-fmark_forward_wordcursorWordRightSelect
C-A-amark_beginning_of_linecursorHomeSelect
C-A-emark_end_of_linecursorEndSelect
C-A-dmark_next_like_thisAdd Selection To Next Find Match
C-A-S-dmark_all_like_thisSelect All Occurrences of Find Match
C-A-sskip_to_next_like_thisMove Last Selection To Next Find Match
C-A-S-sskip_to_previous_like_thisMove Last Selection To Previous Find Match多くは C-A-u で代用可
C-A-xexpand_regionExpand Selection
C-A-S-xshrink_regionShrink Selection多くは C-A-u で代用可
C-A-ucursor_undoCursor Undo
C-A-rcursor_redoCursor Redo
C-A-gkeyboard_quit2-Esc キーを発行しない keyboard_quit

※ マルチカーソルを維持したまま選択したリージョンを解除するには、Esc キーを発行しない keyboard_quit(C-A-g)を利用してください。(fc.esc_mode_in_keyboard_quit 変数が 2 の場合は、 連続入力しない C-g を利用することもできます。)

※ 「矩形選択 / マルチカーソル」の機能については、次のページを参考としてください。

※ 次の VSCode の Extension をインストールすると、この「矩形選択 / マルチカーソル」の機能が より有用なものとなります。

キーバインドの設定は次の拡張機能の中で行っています。

●「ターミナル操作」のキー設定(パネル内ターミナル)

KeybindFunctionVSCode CommandDescription
C-~ (C-S-`)create_terminalTerminal: Create New TerminalUS Keyboard の場合
C-`toggle_terminalView: Toggle TerminalUS Keyboard の場合
KeybindFunctionVSCode CommandDescription
C-` (C-S-@)create_terminalTerminal: Create New TerminalJIS Keyboard の場合
C-@toggle_terminalView: Toggle TerminalJIS Keyboard の場合
C-S-<半角/全角>create_terminalTerminal: Create New TerminalJIS Keyboard の場合
C-<半角/全角>toggle_terminalView: Toggle TerminalJIS Keyboard の場合

※ C-@ は、fc.use_ctrl_atmark_for_mark 変数が False の場合に機能します。

※ ターミナルで4つのキー(C-k、C-r、C-s、C-y)のダイレクト入力をできるようにするためには、 VSCode の Preferences: Open User Settings (JSON) の機能で settings.json を開き、 次の設定を追加してください。

"window.title": "${dirty}${activeEditorShort}${separator}${rootName}${separator}${appName} - ${focusedView}"

※ fc.use_direct_input_in_vscode_terminal 変数を True にすることでも、同様の機能を利用することが できます。この機能を利用する場合は、上記のいずれかのキーを押下してターミナルに移行するように してください。 ただし、window.title の設定を行う方法の方がマウスでビューを切り替えられるなどメリットが多いため、 fc.use_direct_input_in_vscode_terminal 変数を True にする方法は、非推奨の方法となりました。

※ ターミナルで C-k を利用できるようにするには、VSCode の 設定で terminal.integrated.allowChords を false にする必要があります。

※ bash のターミナルで C-s を利用できるようにするには、bash で stty stop undef の設定をする必要が あります。この設定をしないでこのキーを押下すると stop から戻れなくなりますのでご注意ください。

※ PowerShell のターミナルで emacs キーバインドを使うためには、次のページを参照してください。

※ fc.use_direct_input_in_vscode_terminal 変数を True にしている場合、ターミナルから抜けるには 次のキーを利用するようにしてください。先に説明した4つのキーがターミナル外で機能するキーバインド として認識されるように戻ります。 また、マウスでビューの変更をしたり、ターミナルのシェルを終了してパネルをクロースした場合などに、 現在の場所の認識に齟齬が発生することがあります。 その場合も次のいずれかのキーを押下することにより、Fakeymacs に現在の場所を再認識させるようにして ください。なお、これらの利用上の制約は、window.title の設定を行う方法の場合には発生しません。 このため、fc.use_direct_input_in_vscode_terminal 変数を True にする方法は非推奨となりました。

KeybindFunctionVSCode CommandDescription
C-`toggle_terminalView: Toggle TerminalUS Keyboard の場合
C-@toggle_terminalView: Toggle TerminalJIS Keyboard の場合
C-<半角/全角>toggle_terminalView: Toggle TerminalJIS Keyboard の場合
Ctl-x oother_windowNavigate Between Editor Groups
C-<数字キー>switch_focus(<数字キーの値>)Focus Side Bar or n-th Editor Group
C-A-<数字キー>switch_focus(<数字キーの値>)Focus Side Bar or n-th Editor Group

●「ターミナル操作」のキー設定(エディタ領域ターミナル)

KeybindFunctionVSCode CommandDescription
C-A-`create_terminal_in_editor_areaTerminal: Create New Terminal in Editor AreaUS Keyboard の場合
C-A-@create_terminal_in_editor_areaTerminal: Create New Terminal in Editor AreaJIS Keyboard の場合
C-A-<半角/全角>create_terminal_in_editor_areaTerminal: Create New Terminal in Editor AreaJIS Keyboard の場合

※ エディタ領域にターミナルを開く場合には、上記のキーを利用してください。

※ この機能は、fc.terminal_list_for_direct_input 変数に設定しているターミナルに対し、動作します。

● 「その他」のキー設定

KeybindFunctionVSCode CommandDescription
M-xexecute_extended_commandShow All Commands
M-;comment_dwimToggle Line Comment
C-’trigger_suggestTrigger SuggestUS Keyboard の場合
C-:trigger_suggestTrigger SuggestJIS Keyboard の場合

※ Meta(M-)で Esc を利用したい場合には、fc.use_esc_as_meta 変数を True にしてください。 True にした場合に Esc を入力するには、Esc を二回押下してください。

※ IntelliSense の機能については、次のページを参考としてください。

Cursor AI 専用のキーバインド

Cursor を利用する場合、AI のインラインアシスタント機能を起動するショートカットキー Ctrl+k が Emacs キーバインドと重複するため、キーの変更が必要となります。 Cursor の Preferences: Open Keyboard Shortcuts (JSON) の機能で keybindings.json を開き、次の設定 (Ctrl+k を Ctrl+e に変更する設定)をマージしてください。本拡張機能は、Cursor にこの設定がマージ されていることを前提に、調整が行われています。

// Place your key bindings in this file to override the defaults
[
    {
        "key": "ctrl+k",
        "command": "-aipopup.action.modal.generate",
        "when": "editorFocus && !composerBarIsVisible && !composerControlPanelIsVisible"
    },
    {
        "key": "ctrl+e",
        "command": "aipopup.action.modal.generate",
        "when": "editorFocus && !composerBarIsVisible && !composerControlPanelIsVisible"
    },
    {
        "key": "ctrl+k",
        "command": "-cursorai.action.generateInTerminal",
        "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
    },
    {
        "key": "ctrl+e",
        "command": "cursorai.action.generateInTerminal",
        "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported"
    }
]

また、Cursor には VSCode 用のキーマップ keymap_vscode が適用される他に、Cursor 用のキーマップ keymap_cursor が適用されます。このキーマップでは、次の設定により、キーの置き換えが可能となっています。

● Cursor AI 用プレフィックスキーの置き換え設定

Cursor’s prefix keyFakeymacs’s prefix keyDescription
fc.cursor_prefix_key[n][0] の設定値fc.cursor_prefix_key[n][1] の設定値初期値:C-m → C-A-m

※ Fakeymacs のプレフィックスキーを利用することにより、プレフィックスキーの後に入力するキーが 全角文字で入力されることが無くなります。

※ Cursor では、VSCode の Ctrl+k キーとは別に、Ctrl+m キーもプレフィックスキーとして利用されます。

● キーの置き換え設定

Cursor’s keyFakeymacs’s keyDescription
fc.cursor_replace_key[n][0] の設定値fc.cursor_replace_key[n][1] の設定値初期値:C-e → C-A-e、C-l → C-A-l

※ Cursor では、AI の機能を追加するために新たなショートカットキーが追加されています。 これらのショートカットキーは Fakeymacs で設定している Emacs キーバインドと重複するものがあるため、 fc.cursor_replace_key 変数の設定により、キーの置き換えができるようにしています。 なお、Fakeymacs では、C-q を前置するか、fc.side_of_ctrl_key で設定した側でない Ctrl キーを使う 方法でも Windows のショートカットキーを入力することが可能です。 このため、本設定は、利用頻度の高いキーの置き換えに使用するのが良いと思われます。

関数(Functions)

■ define_key_v

VSCode 用キーマップにキーを定義する

Function
def define_key_v(keys, command, skip_check=True):
Parameters
ParameterDescription
keys設定するキー(マルチストロークのキーはスペースで区切る)
command実行するコマンド(関数)
skip_checkキー設定のスキップ判定を行うかどうかを指定する
Returns
  • 無し

■ vscodeExecuteCommand

VSCode のコマンドを実行する関数を返す

Function
def vscodeExecuteCommand(command, esc=False):
Parameters
ParameterDescription
commandVSCode の Command Palette で実行するコマンドの文字列(短縮形の場合も有り)
escコマンドが実行できない時にコマンドパレットの表示を消すための ESC を入力するかを指定する
Returns
  • 引数で指定したコマンドを実行する関数

拡張機能(Extensions)

本拡張機能では、さらに以下の拡張機能が利用できます。

Extension nameDescription
vscode_extensionsVSCode Extension 用のキーの設定を行う

留意事項

● 本フォルダにある _config_personal.py を config_personal.py というファイル名にすることで、 機能拡張ファイルとして機能します。vscode_key Extension の機能を拡張する際にご利用ください。 また、上記で説明している拡張機能(vscode_extensions)もこの機能拡張ファイルの中から読み込まれます。

● fc.side_of_ctrl_key 変数で設定した側でない Ctrl キーを使う、C-q を前置する、fc.vscode_prefix_key 変数や fc.cursor_prefix_key 変数で指定した Fakeymacs 用のプレフィックスキーを使うことで、 VSCode 本来のショートカットキーを入力することもできます。 VSCode のショートカットキーは、次のページで詳しく紹介されています。

● vscodeExecuteCommand 関数内では日本語入力モードの切り替えを行っているのですが、Google 日本語入力を利用して入力モードのポップアップを表示する設定にしている場合、このポップアップが 何度も表示される症状が発生するようです。このため、ポップアップを非表示にする設定にしてご利用 ください。

● ブラウザで vscode.dev を指定した際などに開く VS Code Web の画面では、C-F4 がブラウザ側 でキャッチされ、ブラウザのタブを閉じようとしてしまいます。 このため、VS Code Web 画面で Ctl-x k を実行した場合には、コマンドパレットで View: Close Editor を実行するようにし、VS Code Web 側の機能が働くようにしています。 M-k は 従来どおり C-F4 を発行するのみの機能としていますので、VS Code Web を利用する場合 には、M-k と Ctl-x k を使い分けるようにしてください。

● ブラウザで vscode.dev を指定した際などに開く VS Code Web の画面では、C-Tab がブラウザ側 でキャッチされ、ブラウザのタブを切り替えてしまいます。 このため、VS Code Web 画面で Ctl-x b を実行した場合には、コマンドパレットで View: Quick Open Privious Recently Used Editor in Group を実行するようにし、VS Code Web 側の機能が働く ようにしています。 C-Tab は 従来どおりブラウザで機能しますので、VS Code Web を利用する場合には、C-Tab と Ctl-x b を使い分けるようにしてください。

● Google Chrome を利用している場合、次のサイトに記載のある方法で VS Code Web の画面の ショートカットを「ウィンドウで開く」オプション付きで作成すると、先の2つの問題を回避する ことができます。お試しください。

● Micorosoft Edge を利用している場合、次のサイトに記載のある方法で VS Code Web の画面を アプリ化すると、先の2つの問題を回避することができます。お試しください。

● proxy サーバ配下の環境にある PC で Remote-WSL を使った場合、WSL に接続するまでに時間が 掛かる問題が発生していました。次のページで紹介してある設定を行ったところ改善しましたので、 紹介しておきます。

● VSCode の検索機能では、検索した後にカーソルを移動して再度検索を行うと、検索する文字列が 移動したカーソルの場所にある単語に置き換えられてしまいます。 この挙動を抑制する方法が、次のページに書かれています。