vimを使い始めて約一週間...

# はじめに

大阪でSES企業に勤めているしがない26歳のエンジニアです。
昨今ではコロナが大流行しており、その影響は弊社にも大打撃を与えました。
そして雑魚エンジニアである私は待機エンジニアに、、、

そこで、時間を持て余していた私は前々から気になっていたVIMに手を出してみようと企てました。(これが一週間前)
VIMを使い始めた当初はマウスが恋しく、カーソルの移動にもいちいちhjklと脳内で変換しなくてはいけないので単純なコード修正でも頭をフル回転させました。

その際、使い始めてからどれくらいでまともにVIM(まだまだ雑魚vimer)を使えるようになるのかという目安が欲しいなと思い、今回この記事を書こうと思い立ちました。


#  結論
これからも継続して使っていこうかなくらいには使いやすかった。

なぜこんな中途半端な結論なのかというと、まだ使い始めて一週間ということもあり
まだまだ私自身がVIMの機能をフルに活用し切れていないと感じるからです。それだけVIMのキーバインドや機能の豊富さ、カスタマイズ性などの奥深さを感じています。

なので自信をもってvimerと自称できるくらいにまではつかっていこうと思います。

使い始めて一週間のレベル感
下記添付画像の文字をVIMで記述するというトレーニングがりますが、VIM開始時は10分以上掛かっていましたが、現在は5分を切れるくらいにはVIMの操作に慣れてきたかなという感じです。

[VIMに慣れよう](https://joytas.net/programming/vim%E3%81%AB%E6%85%A3%E3%82%8C%E3%82%88%E3%81%86)![スクリーンショット-2019-11-12-19.50.53-403x1024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413517/4b65a3c2-c288-69a6-d01d-a35b6851d55d.png)


## やったこと
**1. 歴代のvimerの記事を読み漁る**
**2. VScodeにVIMを入れる**
**3. 毎日10分のキーバインドトレーニング**

## 1歴代のvimerの記事を読み漁る
とりあえず私が参照させていただいた記事の一覧

- [もうこれでVIM学習は最後にしよう！VIMチュートリアルと入門](https://qiita.com/baby-degu/items/9b6b275b72c37a02001c)　

↑一番初めに参考にさせていただきました。基本的なキーバインドは網羅されていますが、初心者の方は結局どれを使えばいいの？という印象になります。辞書的に拝見させていただいています。



- [脱初心者を目指すなら知っておきたい便利なVimコマンド25選 (Vimmerレベル診断付き)](https://qiita.com/jnchito/items/57ffda5712636a9a1e62)

↑どのコマンドが初心者向けかそうでないのかをレベリングしてある記事だったのでとても参考になりました。執筆者が特に便利だと感じておられるコマンドなどの紹介なので、数あるコマンドの中で主に使用されているコマンドを知れてよかった。

- [Vim幼稚園からVim小学校へ](https://qiita.com/hachi8833/items/7beeee825c11f7437f54)

 ↑この記事はVIMを学習していく上で、初心者、中級者、上級者と区別して記事を書かれていたので学習する際に読みやすかった。VIM使い初めに読むといいかも。


以下
VScodeやVIMでこれは設定しておいた方がいい！という記事が載っています。いれたてのVIMよりもescをjjに設定したりなど、変更しておいた方が幸せになれるのでお勧めです。

- [Vim から VS Code へ覚悟を持って移行する](https://girigiribauer.com/tech/20190212/)


- [Vim風VS Codeカスタマイズ詳細](https://www.kickbase.net/entry/vscode-settings#vim-easymotion)

- [Visual Studio Code + Vim extension の キーバインディングをカスタマイズする](https://tc.hatenablog.com/entry/2016/11/29/225724)



- [mac+vscode+vim設定でのカーソル移動・連打問題の解決](https://qiita.com/yokohama/items/0aa40e8239d0f8b5afc3)


↑　mac用　jklhなどのカーソル移動ボタンを連打しないと移動できないバグの解消が載っています 。


## VScodeにVIMを入れる

私はもともとVScodeで開発などを行っていました。なので素のVIMで作業をしていた時もその見た目やgitとの連携などがやりにくい(なんかプラグインとか入れたらいける？）などのストレスを感じ早くも挫折しかけました。
そこでVScodeにVIM拡張機能を入れることで一旦この問題は解決しました。
~~neovimとかもあるらしいけどよくわかりませんでした。~~

とりあえず様々な記事を読み漁り、これだけは初心者さんでもしておいた方がいいなと感じた設定をご紹介します。

##### 1,escキーの代わりにjjを使用する
escキーは手が小さい方にとっては怖ろしく距離が遠いので、、、
インサートモードからJJと入力するだけでノーマルモードに移行できるので絶対にした方がいいとまで言えるかもしれません。

```setting.json
"vim.insertModeKeyBindings": [
        {
            "before": [
                "j",
                "j"
            ],
            "after": [
                "<Esc>"
            ]
        }
    ],

```

#### 2,全選択のショートカットキー
VIM拡張機能をVScodeに入れてしまうことが原因なのかはわかりませんが、全選択のctl+a が使用できなくなりました、、、

Vimerの全選択は ggvGで実現できるのですが初めのうちはこの操作すら思い出さないとできなかったことを記憶しています。

そこでショートカットキーの設定
 スペース + a 

```setting.json
"vim.leader": "<space>",
"vim.normalModeKeyBindingsNonRecursive": [
       {
             "before": [
                 "<leader>",
                 "a"
             ],
             "after": [
                 "g",
                 "g",
                 "V",
                 "G"
             ]
         }
    ]
```
#### 3.マウスを極力使いたくない人向けの設定

 正直エディター内だけであればそんなに設定を加えないといけないということは少ないです。（それだけVIM拡張機能で多くのことができる）

しかし、どうせならVScodeの中をマウスなしで縦横無尽に移動したい。

<br>


**1エディターからターミナルへ、、、**

```keybindings.json
   {
        "key": "ctrl+k",
        "command": "workbench.action.terminal.toggleTerminal",
        "when": "editorTextFocus"
    },{
        "key": "ctrl+k",
        "command": "workbench.action.focusActiveEditorGroup",
        "when": "terminalFocus"
    }
```
この記述を入力することで
エディター内でctrl+kを入力するとターミナルへ、、
ターミナル内でctrl+kを入力するとエディターへ、、

かなり便利です。
なぜこの記述でそのような設定ができるのかは勉強不足のため割愛します。



<br>







**2エディター内のタブを右へ左へ、、、**
いくつかのファイルを開いているとどんどんタブがたまっていくと思います。
その移動をショートカットキーを設定することで実現できます。

```keybindings.json
 {
	"key": "ctrl+h",
	"command": "workbench.action.previousEditor"
},
{
	"key": "ctrl+l",
	"command": "workbench.action.nextEditor"
},
```

これはVIMを入れていなくても設定しておきたい便利機能です。
左のタブを表示したいときは　ctrl+l　右のタブを表示したければ　ctrl+h　を入力すると移動することができます。


## 3. 毎日10分のキーバインドトレーニング


先ほど添付した牛丼の種類が記載してある画像(ある程度の文量と類似性のある文章であればなんでもいい)を毎日一回、時間を測りながら実行しました。

やはり実際に手を動かしていく内に、この部分はヴィジュアルモードのこのコマンドを打つ方が早いなとか、時間のかかる部分はどうすれば早く編集できるかなど実際に手を動かすからこそ調べるきっかけにもなったかなと思います。

**やってよかったこと**
多くのテキストエディタにはほとんどない?(知らない)文章を横選択ではなく、縦に選択できるのでキムチ牛丼をトローリ三種のチーズ牛丼に変更するのも一瞬でできます。

- ビジュアルモードの駆使
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413517/add31b59-6211-e92c-698f-080e942ecf7e.png)


- .（ドット)の多様 
ドットには前回行った処理をコピーしておいてくれてドットを押すだけで何度でも繰り返してくれます。値段の入力で中盛と大盛は同じ値段なので中盛の値段の部分にカーソルを合わせて　ciw→610　と入力し、次の大盛の値段の部分で.を押すだけ610と自動入力(ciw 610)してくれる。


マジモンのvimerは上記のトレーニングを1分30秒で記述し終えるらしいのでまだまだ私の知らないコマンドや記述方法があるのでしょう...

###　終わりに

 VIMを初めて一週間なのでまだまだ未熟です。調べれば調べるほど興味が湧いてくるから不思議です。さらい詳しい情報が知りたいと思った私は書籍の購入を検討したのですがなぜかどの書籍も高い、、、
特に「VIM 思考のスピードで編集しよう!」という本があるのですが、人気すぎて定価2800円なのにAmazonですら5000円で販売している始末です、、

まぁ今後もVIMを使ってできる作業はVIMで記述して真のvimerになるべく精進したいと思います。