Workaround for text boxes
ganaware opened this issue · 2 comments
ganaware commented
概要
- VSCode のテキストボックスのキーバインドはカスタマイズができません
- そのため、テキストボックスで Emacs 的な操作をすると思わぬ結果になります
- 思わぬ結果になるよりは、何も起こらないように無効にしておいたほうが良いのではないかと思います。
VSCode のテキストボックスの現状
VSCode では、現在のところテキストボックスでのキーバインディングのカスタマイズはほとんどできません。
- Allow to bind cursor navigation keys to input fields
https://github.com/Microsoft/vscode/issues/65578 - Allow to configure cursor keys for input fields
https://github.com/Microsoft/vscode/issues/64694 - などなど。探せば他にも似た issue が見つかります。
https://github.com/Microsoft/vscode/labels/keybindings
そのため、テキストボックスでのキーバインディングはほとんどデフォルトの動作をします。
- Windows ではデフォルトのキーバインディングは Emacs とは割と異なります
- macOS での事情はわかりませんが、おそらく割と Emacs と似ているのではないかと思います
- Linux での事情もわかりません
このような事情なので、Windows 特有の問題といえると思います。
Windows での例
例えば Search View (メニューの View ⇒ Search) を開いて、
左上の検索文字列を入力する欄に文字を入力している際に、
- C-b を押すと
- 期待すること: カーソルが左へ動く
- 実際に起こること: Search View が閉じる
- C-f を押すと
- 期待すること: カーソルが右へ動く
- 実際に起こること: Find Widget が表示される
といった、期待とはかけ離れたことが起こります。
Workaround
期待とはかけ離れたことが起こるよりは、何も起こらない方が都合が良いと思います。
そこで、テキストボックスで自然と行ってしまいがちな Emacs 的操作について、Windows では動作しないような設定をすると良いのではないでしょうか?
[
{
"key": "ctrl+f",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "ctrl+b",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "ctrl+a",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "ctrl+e",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "alt+f",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "alt+b",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "ctrl+d",
"when": "isWindows && inputFocus && !textInputFocus",
},
{
"key": "ctrl+h",
"when": "isWindows && inputFocus && !textInputFocus",
},
{
"key": "alt+d",
"when": "isWindows && inputFocus && !textInputFocus",
},
{
"key": "ctrl+k",
"when": "isWindows && inputFocus && !textInputFocus",
},
{
"key": "ctrl+w",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "alt+w",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "ctrl+y",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "alt+y",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "ctrl+m",
"when": "isWindows && inputFocus && !textInputFocus",
},
{
"key": "ctrl+j",
"when": "isWindows && inputFocus && !textInputFocus && !findWidgetVisible",
},
{
"key": "alt+l",
"when": "isWindows && inputFocus && !textInputFocus",
},
{
"key": "alt+u",
"when": "isWindows && inputFocus && !textInputFocus",
},
{
"key": "alt+backspace",
"when": "isWindows && inputFocus && !textInputFocus",
}
]
whitphx commented
ありがとうございます、検討させていただきます。