【優先度別】vimコマンド集



<!-- wp:paragraph -->
<p>皆様こんばんは、kumaです！

本日は最低限これだけは覚えた方がいい、vimコマンド集というテーマで記事を書きたいと思います！</p>
<!-- /wp:paragraph -->

## 前提

今回の優先度はあくまで私の主観が入っておりますので、あらかじめご了承ください💦

<!-- wp:heading -->
<h2>なぜvimの使い方を覚える必要があるのか？</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>「正直vscodeがあるからvimの使い方なんて覚えても意味ないんじゃないか？」</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>このように考える方もいらっしゃると思います。<br>私自身別にvimmerでもありませんし、自分の開発しやすいエディタを使えば良いと感じております。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>ですが、<strong>実務でvimやviを使用してコードを書くことも意外とあったりします（サーバーの設定ファイルなどを書くときなど）。</strong>そんなときにvimに慣れていないと、思わぬミスを引き起こしたり、復旧作業に余計な時間をかけたりする可能性が高くなります。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>そのため、vimmerでなくともある程度vimの使い方については知っておく必要があると思い、今回の記事を書くことにしました。</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>vimの使い方</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3>モード切り替え</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>vimには通常のエディタと違い、モードという概念が存在します。<br>このモードを切り替えることで効率的にテキストの編集ができるようになります。<br>逆にこのモードという概念を理解していないと、変なミスを起こす原因になるのでここはしっかり押さえておきましょう。（ノーマルモードで編集しているつもりでコマンドを入力したら挿入モードになっていて、ソースコードに不要な文字が入り込み、結果エラーになるなど）</p>
<!-- /wp:paragraph -->

<!-- wp:table -->
<figure class="wp-block-table"><table><tbody><tr><td>モードの種類</td><td>コマンド</td><td>優先度</td></tr><tr><td>ノーマルモード</td><td>esc or controll + c（vim起動時はこのモードになっています。）</td><td>★★★</td></tr><tr><td>挿入モード</td><td>ノーマルモードで i</td><td>★★★</td></tr><tr><td>ビジュアルモード</td><td>ノーマルモードで v</td><td>★★★</td></tr><tr><td>コマンドラインモード</td><td>ノーマルモードで : or /</td><td>★★★</td></tr></tbody></table></figure>
<!-- /wp:table -->

<!-- wp:paragraph -->
<p>それでは各モードの説明をしていきます。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>ノーマルモード：カーソル移動など様々なコマンドを実行できるモード</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>挿入モード：実際にテキストを編集するモード</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>ビジュアルモード：入力されたテキストを選択できるモード</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>コマンドラインモード：ファイルの保存や、行ジャンプ、検索、置換、エディタの分割などを行うモード</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>カーソル移動編</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>h, j, k, lに関しては正直矢印キーで移動できてしまうのでそこまで優先度は高くしておりません。</p>
<!-- /wp:paragraph -->

<!-- wp:table -->
<figure class="wp-block-table"><table><tbody><tr><td>やりたいこと</td><td>コマンド</td><td>優先度</td></tr><tr><td>左に移動</td><td>h</td><td>★</td></tr><tr><td>右に移動</td><td>l</td><td>★</td></tr><tr><td>上に移動</td><td>k</td><td>★</td></tr><tr><td>下に移動</td><td>j</td><td>★</td></tr><tr><td>ファイルの先頭に移動</td><td>gg</td><td>★★</td></tr><tr><td>ファイルの末尾に移動</td><td>G</td><td>★★</td></tr><tr><td>特定の行に移動</td><td>:行番号</td><td>★★★</td></tr><tr><td>行頭に移動</td><td>^</td><td>★★★</td></tr><tr><td>行末に移動</td><td>$</td><td>★★★</td></tr><tr><td>次の単語の先頭に前進</td><td>w</td><td>★★★（eとどちらか一方でも押さえていればOK）</td></tr><tr><td>単語の終わりまで前進</td><td>e</td><td>★★★（eとどちらか一方でも押さえていればOK）</td></tr><tr><td>現在の単語もしくは前の単語の先頭に後退</td><td>b</td><td>★★★</td></tr></tbody></table></figure>
<!-- /wp:table -->

<!-- wp:heading {"level":3} -->
<h3>コピペ・テキスト削除編</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>xに関しては最悪インサートモードに入ってから、削除すれば良いので優先度は高くしておりません。</p>
<!-- /wp:paragraph -->

<!-- wp:table -->
<figure class="wp-block-table"><table><tbody><tr><td>やりたいこと</td><td>コマンド</td><td>優先度</td></tr><tr><td>カーソルのある行を削除</td><td>dd</td><td>★★★</td></tr><tr><td>1文字削除</td><td>x</td><td>★</td></tr><tr><td>今いる行をコピー</td><td>yy</td><td>★★★</td></tr><tr><td>今いる行から複数行をコピー</td><td>y 行番号 y</td><td>★★★</td></tr><tr><td>カーソルの下にコピーした行をペースト</td><td>p</td><td>★★★</td></tr></tbody></table></figure>
<!-- /wp:table -->

<!-- wp:heading {"level":3} -->
<h3>検索・置換編</h3>
<!-- /wp:heading -->

<!-- wp:table -->
<figure class="wp-block-table"><table><tbody><tr><td>やりたいこと</td><td>コマンド</td><td>優先度</td></tr><tr><td>文字列の検索</td><td>/検索したい文字</td><td>★★★</td></tr><tr><td>次の検索結果に進む</td><td>検索後、n</td><td>★★★</td></tr><tr><td>前の検索結果に進む</td><td>検索後、N</td><td>★★★</td></tr><tr><td>置換</td><td>:%s/置換前の文字/置換後の文字/g</td><td>★★★</td></tr></tbody></table></figure>
<!-- /wp:table -->

<!-- wp:heading {"level":3} -->
<h3>画面分割編</h3>
<!-- /wp:heading -->

<!-- wp:table -->
<figure class="wp-block-table"><table><tbody><tr><td>やりたいこと</td><td>コマンド</td><td>優先度</td></tr><tr><td>画面を左右に分割する</td><td>:vs ファイル名</td><td>★★★</td></tr><tr><td>画面を上下に分割する</td><td>:sp ファイル名</td><td>★</td></tr><tr><td>現在カーソルのあるウインドウを閉じる</td><td>:q</td><td>★★★</td></tr><tr><td>全てのウインドウを閉じる</td><td>:qall</td><td>★★</td></tr><tr><td>現在のウインドウ以外を閉じる。</td><td>:only</td><td>★</td></tr><tr><td>ウインドウを順番に移動</td><td>controll + ww</td><td>★★★</td></tr><tr><td>左のウインドウに移動</td><td>controll + wh</td><td>★</td></tr><tr><td>右のウインドウに移動</td><td>controll + wl</td><td>★</td></tr><tr><td>上のウインドウに移動</td><td>controll + wk</td><td>★</td></tr><tr><td>下のウインドウに移動</td><td>controll + wj</td><td>★</td></tr></tbody></table></figure>
<!-- /wp:table -->

<!-- wp:paragraph -->
<p>ここは好みが分かれるかもしれませんが、私は複数の画面を開いて作業をするときに上下分割をしないので、優先度を低くしました。また、3つ以上のウインドウを開いて作業することが少なかったので、左・右・上・下のウインドウに移動するコマンドについても優先度を落としております。</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>その他</h3>
<!-- /wp:heading -->

<!-- wp:table -->
<figure class="wp-block-table"><table><tbody><tr><td>やりたいこと</td><td>コマンド</td><td>優先度</td></tr><tr><td>ファイルの保存</td><td>:w</td><td>★★★</td></tr><tr><td>ファイルの保存をして閉じる</td><td>:wq</td><td>★★★</td></tr><tr><td>ファイルを閉じる</td><td>:q</td><td>★★★</td></tr><tr><td>ファイルの強制終了</td><td>:q!</td><td>★★★</td></tr><tr><td>行番号を表示</td><td>:set number</td><td>★★★</td></tr><tr><td>一個前の操作を戻す</td><td>u</td><td>★★★</td></tr></tbody></table></figure>
<!-- /wp:table -->

<!-- wp:paragraph -->
<p>vim経験が浅く、最近知ったのですがuめちゃくちゃ便利ですね。ちゃんとvimを勉強する前はddコマンドで間違えて行を消したら、一旦:q!で抜けてまたやり直してたので。。（めちゃくちゃ効率悪い）</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>最後に</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>今回ご紹介したコマンドは一部でしかないのですが、ここに書いてある★★★のコマンドをマスターすれば最低限vimでのコーディングはできると思います！<br>マスターするにはとにかく触ってみることが一番だと思いますので、実際に触ってみていただければと思います！</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>ちなみにvscodeでvimのコマンドを使用できるプラグインが存在するので、そちらをインストールして試してみても良いかもしれませんね！</p>
<!-- /wp:paragraph -->

<!-- wp:embed {"url":"https://marketplace.visualstudio.com/items?itemName=vscodevim.vim"} -->
<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://marketplace.visualstudio.com/items?itemName=vscodevim.vim
</div></figure>
<!-- /wp:embed -->