竹の子エンジニア

30代から目指すエンジニアの日記

VisualStudioでvimキーバインディングを使うわがままをお許しください。

どうもこんにちは。

最近会社でC#でコードを書いており、VisualStudioを使っているんですが、どうしてもvimが使いたかったのでvsvimを使ってます。
拡張に関しては基本的に行わないようにしているので、vsvimrcを触ったりなんかはしてないです。
(そもそもvimrcをどこに記述するのかをよくわかっていない)

今回VisualStudioでVsVimを使うにあたってのコマンドの覚え書きと言いたいところですが、VsVimに関わらず基本的なvimコマンドの自分用の備忘録です。

文字入力系

i : カーソル行から文字を挿入する
I : カーソル行の先頭行から文字を挿入する
a : カーソル行の右から文字を挿入する
A : カーソル行の末尾から文字を挿入する
o : カーソル行の下から文字を挿入する(改行される)
O : カーソル行の上から文字を挿入する(改行される)

ビジュアルモード(矩形選択)系

Ctrl + v : ビジュアルモードへの移行
Ctrl + v + 行選択 + I + (文字挿入) + Esc : ビジュアルモードの選択行の先頭に文字を追加
(例)

aaa
bbb
ccc

上記の文章があるとして、Ctrl+v→3行選択→Iを押下し、[//]と記入後Escを押す

//aaa
//bbb
//ccc

となる

Ctrl + V : 行をすべて選択

文字削除系

文字を削除するともれなくヤンクされる
x : 一文字削除
dw : カーソル位置から単語分削除
d$ : カーソル位置から行末まで削除

di(対象文字) : 対象文字までの中身だけ削除
(例)

(hogehoge(fugafuga))

となっている場合、hogeのどこかにカーソルがある状態で、di)とすると、
()となる。
同様に、fugaのどこかにカーソルがある状態でdi)とすると、(hogehoge())となる。

画面スクロール系

Ctrl + e : 画面を一行分下にスクロールする(カーソルは移動しない)
Ctrl + d : 画面を1ページ分下にスクロールする(カーソルも移動する)

ヤンクせずに削除する方法
"_ + (削除系コマンド)

コピーしたのに削除してしまったためヤンクされた場合の対処
"0p : 直前のヤンクしたテキストをペースト

タブ系

gt : 次のタブに移動

vs
垂直画面分割
split
平行画面分割
close
タブを閉じる

検索

/を押して検索を行う
/(検索文字) : 文字を前方検索 n で次へ
?(検索文字) : 文字を後方検索 n で次へ
Ctrl + R →" でヤンクしたテキストのペースト

置換系

→ s/hogehoge/hugahuga/
hogehogeを一括してhugahugaに置換

VisualModeで:を押すと、:'<,'>となるが、同様に上記と同じコマンドを入力すると置換可能(選択範囲の該当する内容だけが置換対象となる)

VisualStudioならではのコマンド

コードの展開、表示 : Ctrl + M → Ctrl + M: コードの展開・折りたたみ
Ctrl + M → Ctrl + L : すべてのコードの展開・折りたたみ

ソリューションエクスプローラーにフォーカス: Ctrl + Alt + L

余談(1)

たまに先輩にこういう風にコード書き換えたらできるよ!って感じでキーボードを奪われる時があるんですが、英語キーボードvimキーバインディング+VisualStudioのショートカットほぼ使えないという状況にしているのでたまにすんませんとなったりはします。
セキュリティは完璧だね!

あと英字キーボードを使う上で便利なのが、Altキー空打ちで日本語入力を切り替えるツールを使っています。
こちらについては以下のリンクを参照ください。
www.karakaram.com

ただVisualStudio(2013だけ?)だとAltキー空打ちしても日本語入力切り替わったり切り替わらなかったりするプロジェクトがあるのはなんでなんだろ…。
そういう時は仕方なくAlt + ~使ってますが、VisualStudioだけでこれ使うのもめんどくさい……。

あと日本語入力に関してもESCキーを押したときに解除されると捗ります。

余談(2)

誰かこれを買ってVimについて教えてください…。(金欠すぎて買えない)