Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

VSCodeのvimキーバインドをいい感じにする

$
0
0

はじめに

今更ながら Atomから VSCodeに乗り換えたので、早速 VSCodeVimをインストールし快適なvimライフ(?)を送っていたのですが、いくつかキーバインドに不満があったので設定してみました。
同じような不満を抱えている方の参考になれば幸いです。

Escキーで検索のハイライトを消す

setting.json
{"vim.normalModeKeyBindingsNonRecursive":[{"before":["<Esc>"],"commands":[":nohl"]}]}

本当はEscキー2回に割り当てたかったのですが、 ["<Esc>", "<Esc>"]としても反応せず...どなたか分かる方いましたら教えてください。
ちなみに vimrcでは以下に相当します。

vimrc
nnoremap <ESC><ESC>:nohl<CR>

ビジュアルモードで連続ペーストする

デフォルトの状態ですと、削除された方のテキストがヤンクされてしまうので、貼り付けた側のテキストをヤンクします。
ヤンク自体を防ぐ方法は見つからなかったのですが、貼り付けたテキストを再びヤンクすることで解決できます。

setting.json
{"vim.visualModeKeyBindingsNonRecursive":[{"before":["p"],"after":["p","g","v","y"]}]}

少しカーソルの動きが変な感じになりますので、気になる方は最後に "e"も追加して末尾に移動するといいかもしれません。
これで vimrcでいう以下のような挙動に近づきます。

vimrc
vnoremap p "_dP

ビジュアルモードのときにTabキーでインデントを調整する

デフォルトの状態ではビジュアルモード時にTabキーが反応せず、複数行をまとめてインデント増減することができなかったので対応します。
setting.jsonvim.visualModeKeyBindingsNonRecursiveでは Shift+Tab をキーバインドにマッピングする方法が分からなかったので、 keybindings.jsonで設定します。

keybindings.json
[{"key":"tab","command":"editor.action.indentLines","when":"editorTextFocus && !editorReadonly && vim.active && vim.mode != 'Insert'"},{"key":"shift+tab","command":"editor.action.outdentLines","when":"editorTextFocus && !editorReadonly && vim.active && vim.mode != 'Insert'"}]

vim.active && vim.mode == 'Normal|Insert|Visual'を使うとだいたいのvimのキーバインドが実現できそうです。

行をまたいで移動する

setting.json
{"vim.whichwrap":"h,l,<,>,[,],b,s"}

これは vimrcと同じ書き方ですね。

vimrc
set whichwrap+=h,l,<,>,[,],b,s

おわりに

私はそこまでvimのキーバインドの設定をいじっていない&使いこなせていないので、これで一旦のところ不満なくVSCodeを使えそうです。
皆さんもおすすめの設定がありましたらコメント等で教えてください。
それでは、良いvimライフを。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>