LoginSignup
9
11

More than 5 years have passed since last update.

Visual Studio Code + VSCodeVim での単語カーソル移動(w, b, e)の簡易日本語対応

Last updated at Posted at 2018-10-07

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.wordSeparatorsvim.iskeywordのいずれかを設定すればOK
    • 通常カーソル移動とVSCodeVimのカーソル移動を特に分ける必要が無い場合はeditor.wordSeparatorsに記述した方が良さそうです (editor.wordSeparatorsvim.iskeywordの両方に書くと二重管理になるので)
    • VSCodeVimだけで使いたいならvim.iskeywordに書く感じ

追記ここまで

  • 通常のVimの単語判定はiskeywordの値に設定されており,VSCocdVimでもvim.iskeywordにて設定可能
  • そこで,vim.iskeyworkに上記editor.wordSeparatorsへの対策と同様の修正を加えることで,VSCodeVimでの単語移動を日本語対応させることが可能
9
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11