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

新米エンジニアのVim入門

$
0
0

はじめに

今後本格的にプログラミングを始めるということもあり、知り合いのエンジニアに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最後の行に移動
NGN行目に移動
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に乗り換えるまで
チートシート


Viewing all articles
Browse latest Browse all 5608

Trending Articles



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