新米エンジニアのVim入門

  • 20
    Like
  • 2
    Comment

はじめに

今後本格的にプログラミングを始めるということもあり、知り合いのエンジニアにVimを使うことを勧められた。
学習の際に参考にしたサイトは最後にまとめて記述するが、特にこちらのサイトは大いに参考にさせていただいた為、特記しておく。
また、Vimの学習をする際には自分で実際にVimを操作しながら学習することが望ましく、これを推奨したい。

Vimをはじめる

僕は基本的にAtomを使っているので、プラグインでvim-mode-plus vim-mode-plus-ex-modeを入れた。このプラグインの細かい機能などはさておき(あまり把握はしていない)、これでAtom上でVimを使うことができるようになった。
ターミナル上でvimと入力することでもVimを使うことができる。

Vimをつかってみる

Vimを触ってみてまず戸惑うのはNormalモードとInsartモードがあることだった。プログラミングをするために、Vimの特性を活かすことより普通にコーディング出来るようにすることを優先する。

まずはiキー、あるいはaキーを押す。これでnormalモードからInsartモードに切り替わり、いつものように入力することができるようになる。
ESCキーを押すことでNormalモードに戻る。

とりあえず、これで普通にコーディングはできるようにはなった。
それでは、もう少し細かくVimのコマンドを見ていこう。

ところで、Vimの保存方法としてNormalモードで:wqを用いるが、Atomでは普通にCtrl-Sで保存ができるのであまり気にしていない。ターミナルなどで操作しているときは:wqをお忘れなく!

Vimをもう少しつかってみる

ここまでVimらしいことは何一つしていない。
ここでVimのNormalモードで使うことのできるコマンドをいくつかリストにしてみる。

コマンド 意味
x カーソル上の文字を消す
dd(dを2回押す) 現在の行をカット
yy 現在の行をコピー(ddpと同じ)
p ペースト
u アンドゥ(戻る)
Ctrl-r リドゥ(進める)

これでNormalモードのままコードをある程度編集することができるようになった。

Vimで移動してみる

"Vimmer"はキーボードから手を離さずに自由自在にカーソルを移動することができるという。
カーソルを移動するために使うことのできるコマンドをリストにしてみる。

コマンド 意味
hjkl それぞれ、← ↓ ↑ →
O 改行しInsartモード
0 行の先頭へ移動
^ 行の空白でない先頭へ移動
$ 行の末尾へ移動
g_ 行の空白でない末尾へ移動

簡単な移動は以上の通り。

加えて、個人的に便利だと思った移動が以下のものである。

コマンド 意味
G 最後の行に移動
NG N行目に移動
w 次のwordの先頭に移動する
e 次のwordの末尾に移動する
W 次のカタマリの先頭に移動する
E 次のカタマリの末尾に移動する
b 前の単語の先頭に移動する

これらを組み合わせて高速でカーソルを移動することができる。

Vimで繰り返し

Vimで繰り返しもすることができる。

コマンド 意味
.(ドット) 最後のコマンドの繰り返す
N<コマンド> コマンドをN回繰り返す

例えば、2ddというコマンドでは2行カットできる。3pで3回ペーストすることができるのである。
10iというコマンドはコードを入力したのちEscキーを押すと、そこまでに入力したコードを10回繰り返してくれる。これは実際に試してみよう。
入力したのは
5ivim yeah EnterEsc
だ。

https://gyazo.com/4cbb9c0eee0a349444045d575536a556

Escを押したタイミングで、そこまでに入力した分を繰り返してくれる。

ここまでのまとめ

ひとまずVimの学習を始めて2時間程度でこのくらいは理解した。
Vimでできることが他にもまだまだあることは、このチートシートを見たら一目瞭然である。僕はまだVimの片鱗に触れてすらいないであろうことも。
一人前のVimmerになるために、基本的なコマンドのみならず、様々なコマンドを試して遊んでみようと思う。

参考にしたサイト

Big Sky:Learn Vim Progressively
僕がサクラエディタからVimに乗り換えるまで
チートシート