VSCodeの拡張機能VSCodeVimにて,w
, b
, e
にて単語レベルでカーソル移動をしたい場合の設定についてメモ
結論
VSCodeのsetting.json
にて以下を追記する.
setting.json
{
...
"vim.iskeyword": "/\\()\"':,.;<>~!@#$%^&*|+=[]{}`?-、。「」【】『』()!? てにをはがのともへでや",
...
}
-
、。「」【】『』()!? てにをはがのともへでや
が追記部分,それ以前はデフォルト - 上記に登録した文字を単語の区切り文字と認識してカーソル移動するため,当然形態素解析したような正確さはない
- 必要に応じて区切り文字の増減要
2019/01/14 追記
上記の代わりに下記を追記しても有効です.違いは備考参照.
(@kazuma1989 さんにコメントでご指摘いただきました,ありがとうございます!)
setting.json
{
...
"editor.wordSeparators": "/\\()\"':,.;<>~!@#$%^&*|+=[]{}`?-、。「」【】『』()!? てにをはがのともへでや",
...
}
備考
- VSCodeでVSCodeVimを用いない場合の単語移動Ctrl+Right/Left(Option+Right/Left)も,デフォルトでは日本語対応していない
- Ctrl+Right/Left(Option+Right/Left)は下記のいずれかで実現可能 (参考:Visual Studio Code の日本語問題まとめ)
- Japanese Word Handlerの導入
-
editor.wordSeparators
に、。「」【】『』()!? てにをはがのともへでや
あたりを追加
2019/01/14 追記
ただし上記設定はVSCodeVimのカーソル移動には反映されない-
vim.iskeyword
を明示しない場合,editor.wordSeparators
が参照されるようになったようです- よって,
editor.wordSeparators
かvim.iskeyword
のいずれかを設定すればOK - 通常カーソル移動とVSCodeVimのカーソル移動を特に分ける必要が無い場合は
editor.wordSeparators
に記述した方が良さそうです (editor.wordSeparators
とvim.iskeyword
の両方に書くと二重管理になるので) - VSCodeVimだけで使いたいなら
vim.iskeyword
に書く感じ
- よって,
追記ここまで
- 通常のVimの単語判定は
iskeyword
の値に設定されており,VSCocdVimでもvim.iskeyword
にて設定可能 - そこで,
vim.iskeywork
に上記editor.wordSeparators
への対策と同様の修正を加えることで,VSCodeVimでの単語移動を日本語対応させることが可能