拡張のインストール
VSCodeでvimを使うためには、まずVSCodeの拡張機能である「Vim」をインストールする必要がある。
拡張機能をインストールするには、VSCodeを開いて、左側のメニューバーから「拡張機能」をクリックし、「Vim」を検索してインストールする。
似たような拡張がたくさんあるがpublisherがvscodevimであることと、ダウンロード数の多さを確認する。
設定
settings.jsonでVim拡張の設定ができる。
設定項目はvim.
から始まるので補完機能で色々と見てみると良い。
手元で使っている設定配下の通り。
{
// 検索にマッチした箇所をハイライト
"vim.hlsearch": true,
// OS のクリップボードと同期
"vim.useSystemClipboard": true,
// モードごとにステータスバーの色
"vim.statusBarColorControl": true,
"vim.statusBarColors.normal": ["#005f5f", "#fff"],
"vim.statusBarColors.insert":["#5f0000", "#fff"],
"vim.statusBarColors.visual": ["#5f00af", "#fff"],
"vim.statusBarColors.visualline": ["#005f87", "#fff"],
"vim.statusBarColors.visualblock": ["#86592d", "#fff"],
"vim.statusBarColors.replace": ["#000000", "#fff"],
"vim.statusBarColors.commandlineinprogress": ["#86592d", "#fff"],
"vim.statusBarColors.searchinprogressmode": ["#86592d", "#fff"],
"vim.statusBarColors.easymotionmode": ["#86592d", "#fff"],
"vim.statusBarColors.easymotioninputmode": ["#86592d", "#fff"],
"vim.statusBarColors.surroundinputmode": ["#86592d", "#fff"],
}
モードごとにステータスバーの色について、ステータスバーとはウインドウ最下部のバーのこと。
vimにはモードがあるので、モードごとにステータスバーの色を変えることで現在のモードがわかりやすくなる。
マルチカーソル
Vim拡張を入れない場合と同様にAlt+クリックでカーソルを追加できる。
ctrl+D(command+D)やctrl+shift+L(command+shift+L)でもカーソルを追加できる。 しかしこの場合はカーソルを追加した時点では「MULTI CURSOR」というモードになっていて編集できない。
まずNORMALモードに戻す必要がある。
MULTI CARSORモードからNORMALモードにするにはEsc
キーもしくはv
キーを入力する。
その状態でw
キーなどで移動したり、i
キーでinsertモードに入ったりして編集できる。
手順をまとめると以下の通り。
- ctrl+Dやctrl+shift+Lなどでカーソルを追加する(→MULTI CURSORモード)
Esc
キーもしくはv
キーを入力する(→NORMALモード)w
キーなどで移動i
キーでinsertモードに入ったりして編集する(→INSERTモード)
再びEscキーを入力するとマルチカーソルが解除される。
置換
vimと同様:
を入力するとコマンドモードに入る。
コマンドモードからvimと同様のコマンドで置換できる。
ファイル全体から置換
:%s/置換前/置換後/g
でファイル全体の置換できる。
:%s
はファイル全体を対象にする。/置換前/置換後/g
は置換前の文字列を置換後の文字列に置換する。
visualモードで選択した箇所から置換
visualモードで選択した状態のときに:
を入力すると:'<,'>
がステータスバーに入力された状態となる。:'<,'>s/置換前/置換後/g
で選択した箇所の置換ができる。:'<,'>
はvisualモードで選択した箇所を対象にする。/置換前/置換後/g
は置換前の文字列を置換後の文字列に置換する。
1件ずつ確認しながら置換
g
の代わりにgc
とすると置換前の文字列がハイライトされるので確認しながら置換できる。
検索
vimと同様/
を入力すると検索モードに入る。
検索モードからvimと同様のコマンドで検索できる。入力する文字列は正規表現が使える。
入力した文字列は検索履歴に残るので、/
を入力した後にctrl+n
、ctrl+p
や、上下キーで検索履歴を表示できる。
カーソル移動キー(hjklなど)長押しで移動できない(キーリピートしない)場合
Macの場合、キー長押しで繰り返し入力されない場合がある。j
キー長押しで1行しか移動しない。
そのような場合はVSCodeに対してキーリピートが無効となっているので、有効となるように設定する必要がある。
以下のコマンドを実行する。
$ defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false
インサイダービルドを使っている場合は以下のコマンドを実行する。
$ defaults write com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false
必要に応じてOSを再起動する。
参考: installation > Mac | Vim - Visual Studio Marketplace
surround.vim
vscodevimはsurround.vim の動作もエミュレートしている。
surround.vimの動作を有効にするにはsettings.json
でvim.surround
をtrue
にする。
{
"vim.surround": true
}
利用できるキーバインドは以下の通り。
キー | 説明 | 例 |
---|---|---|
y s motion desired | motion で指定した範囲をdesired で囲む | ワードをダブルクオートで囲む: ysiw" |
d s existing | existing で指定した囲み文字を削除する | ダブルクオートの囲みを外す: ds" |
c s existing desired | existing で指定した囲み文字をdesired で指定した囲み文字に変更する | ダブルクオートの囲みをシングルクオートの囲みに変更する: cs"' |
S desired | Visual Modeで選択した範囲をdesired で指定した文字で囲む | Visual Modeで選択した箇所をダブルクオートで囲む: S" |