こんにちは、おはじきです。
インフラ、開発問わず日常的にvimを利用するエンジニアの方は非常に多いかと思います。
vimには様々なコマンドがあります。
それらを使いこなすことができればコーディングやファイルの編集などの業務を素早く遂行する事ができるので作業時間短縮に効果的です。
また現場によってはvimの扱いに慣れていないとそれだけで「この人大丈夫かな?」と思われてしまう事もあるようです。
eclipseなどの統合開発環境や、atomなどのプログラミングでよく使われるテキストエディタにもvimのキーバインドを利用できるようにするプラグインがあるのでvimに慣れておくと様々な場面で応用が利く、腐りにくい技術です。
そこで今回練習を始めようと思いこの場でvimのコマンドのアウトプットを行います。
まず基本のカーソル移動です。
h 左
j 下
k 上
l 右
この時点で癖が強いなと思っちゃいますよね。
矢印キーでも同じ動きができるのですが、どうやら矢印キーを使うという事はvim使いの方々からするとタブーのようです。
経験の浅い私では理解できませんが、免許はとりあえずマニュアルを取っておいた方が良いようにとりあえず従っておいた方がよさそうです。
これから出てくる削除やコピーなどのコマンドでも使えるのですが、
3hで3文字左へ、7jで7行下への様に前に数字を入れることで押しっぱなしにしなくても一気に進む事ができます。
行頭、行末に一気に飛べるコマンドも非常に便利かと思います。
^ | 行頭へ移動 |
$ | 行末へ移動 |
I | 行頭へ移動(入力モードへ移行) |
A | 行末へ移動(入力モードへ移行) |
IとAが出てきたのでついでに説明すると、
コマンドモードから入力モードに移行するコマンドとしてiとaがあります。
iはカーソルのある場所から入力モードに移行し、
aはカーソル位置の一つ右側から入力モードに移行します。
これは意外と大きな違いで、どちらも使えるようになるとより効率よく作業ができるかと思います。
日本語の文ではあまり機能しませんが、ソースファイルなど全て英単語の文を編集するにあたっては単語単位で移動できると非常に効率的なのではないでしょうか。
そのためのコマンドがいくつか用意されています。
w | 次の単語へ移動(先頭) |
b | 前の単語へ移動(先頭) |
e | 次の単語へ移動(末尾) |
ge | 次の単語へ移動(末尾) |
f+アルファベット1文字でカーソルのある行の中で入力した文字のところまで飛べます。
Fにすると逆方向に検索して飛びます。
;で次の検索結果に進み、
、で前の検索結果に戻れます。
ここからはより大きい範囲でのカーソル移動のコマンドを解説します。
Ctrl+f | 次のページ |
Ctrl+b | 前のページ |
Ctrl+u | 半分次のページ |
Ctrl+d | 半分前のページ |
gg | ファイルの先頭 |
G | ファイルの最終行 |
H | 画面に表示されてる範囲での先頭行 |
M | 画面に表示されてる範囲での中間行 |
L | 画面に表示されてる範囲での最終行 |
また/検索ワードで指定の文字があるところに飛ぶこともできます。
検索したワードが何回も引っかかることもあるかと思いますが、
nで次の検索結果へ進み、Nで前の検索結果に戻ることができます。
これも非常によく使うコマンドです。
因みに/で下に向かって検索?で上に向かって検索します。
更に:行番号で指定した行番号の地点に飛ぶことができます。
ですがデフォルトでは行番号は表示されてないので:set nuで行番号を表示する必要があります。
文字を削除するコマンドをいくつか紹介します。
こちらもコマンドの前に数字を入れることで何文字、何行と範囲を広げることができます。
x | カーソルの1文字削除 |
dw | カーソルの1単語削除 |
dd | カーソルのある行を削除 |
yy | カーソルのある行をコピー |
p | ペースト |
sedコマンドのようにファイル内の文字を置き換えることもできます。
:s/文字a/文字b/ | 現在行の最初の文字aを文字bに置換 |
:s/文字a/文字b/g | 現在行の全ての文字aを文字bに置換 |
:%s/文字a/文字b/g | ファイル内の全ての文字aを文字bに置換 |
カレントディレクトリのファイル一覧やそもそもカレントディレクトリがどこにあるのか、ファイルを新たに作成したり削除したり、vimを終了しなくても:!でシェルコマンドを利用できます。
操作の取り消しやファイルの挿入や、
長いファイルを編集していると、またここに戻ってくるなというところにマークを付けておいて、いつでもそこに戻ってこれると便利ですよね。
u | 直前の操作を取り消し |
Ctrl+r | 取り消しの取り消し |
:!コマンド | 一旦vimから出てコマンド実行 |
ma | カーソル行にマークを付ける |
‘a | マークを付けた場所に移動 |
:r ファイル名 | ファイルの中身を挿入 |
沢山vimコマンドを紹介しましたがこれでもまだまだ初歩的な部分を脱していないかと思います。
そもそもこれを覚えて使いこなすところまで行くのに1年はかかりそうですね。
ですが自分でまとめてみて、これは使いこなせればとても便利なツールになりそうだという実感が湧いてきました。
編集中はマウスや十字キーを極力使わず、無駄のない作業で時短を極めることができれば早く帰れるし社内の評価も上がること間違いなしなのではないでしょうか。
それでは。