単語を打ち終わって改行したいのに、Suggestions(入力候補)で別の単語が出てしまっていて、改行すると違う単語になってしまう。
Escで抜けることはできるんですが、キーが遠い…
Enterキーで確定する設定をOFFにしてTabキーで確定するのも試したのですが、やっぱりEnterで確定したい。
自分がSuggestionsを閉じようとして直感的に押すキーは方向キーの「←」。しかし単語の頭まで移動しないと抜けてくれない。
行末で、次の行がある状態なら「→」を押せば良いのですが、ファイルの1行目を書き始めたところだったりすると→を押しても閉じてくれない。
なのでEscapeキーの動作を←キーに割り当てられないか?と調べました。
解決策
keybindings.jsonに下記の設定を追加することで実現できました。
// keybindings.json
{
"key": "left",
"command": "hideSuggestWidget",
"when": "suggestWidgetVisible && textInputFocus"
}
"key": "キー名"
の指定を変えれば好きなキーに割り当てられます。
指定可能なキーの一覧はこちら
Visual Studio Code Key Bindings > Accepted keys
元のキーの機能も維持する
このままだと、もともとのキーの動作(カーソルを左に動かす)が実行されなくなってしまう。
最初はそれでいいやと思っていたのですが、しばらく使ってみると違和感がある瞬間が。
なので結局 multi-command という拡張機能を追加して、「Suggestionsを閉じる+カーソルを左に動かす」の二つの動作が実行されるように設定しました。
// settings.json
"multiCommand.commands": [
{
"command": "multiCommand.hideSuggestWidgetAndLeft",
"sequence": [
"hideSuggestWidget",
"cursorLeft"
]
}
]
// keybindings.json
{
"key": "left",
"command": "multiCommand.hideSuggestWidgetAndLeft",
"when": "suggestWidgetVisible && textInputFocus"
}
参考:
Visual Studio Code Key Bindings > Removing a specific key binding rule
ここのコード例にある { "key": "tab", "command": "tab", "when": ... },
を見て、escapeキーの役割を別のキーに割り当てられるのではと思いついた(そのままの書き方ではうまくいかなかったけど)
Implement Intellisense Suggestion Mode · Issue #33725 · microsoft/vscode
一つ目の候補が常にデフォルトで選択されるのではなく、方向キー上下で選択した時だけsuggestionを適用するモードを提案しているIssue。
これが実装されてくれればベストなのですが、対応予定なしでクローズされている…(´・ω・`)
key bindings - visual studio code keybindings - Running two or more commands with one shortcut - Stack Overflow
ひとつのショートカットキーで二つのコマンドを実行する方法 (拡張機能 multi-command を使う)
0 件のコメント:
コメントを投稿