この記事について
かごもく #40 開発環境の紹介で,Vim の紹介をするために用意しました.
Vimとは
Why Vim?
- 軽くてCUI環境で動く
- キーバインドを覚えておくと色々なところで使える
- Vim を使いこなしているとかっこいい
- Vim vs Emacs の宗教戦争に Vim 勢として参戦できる
便利機能紹介
Vim には色々な機能やプラグインがありますが,少ないキー打数で使用頻度が高いものを紹介します.
※ | (vertical line) はカーソル位置を表します
テキストオブジェクト
(参考:text-objects | Vim日本語ドキュメント)
「ダブルクォーテーションに囲まれている文字を全て変更したいなぁ~」なんてしょっちゅうですよね.
そんなときに便利なのがテキストオブジェクトです.
# ノーマルモード
print("foo|bar")
↑ の状態でci"
と入力すると,
# 挿入モード
print("|")
サクッと編集できます.
ダブルクォーテーション以外にも,単語,文,段落,HTMLタグ, [], (), <>, {}, '', `` などのブロックの選択・変更が簡単に行えます.
最初のオペレータコマンドは,c
(変更)以外にもd
(削除),y
(ヤンク)などのオペレータコマンドが使えます.
矩形ビジュアルモード
(参考:blockwise-operators | Vim日本語ドキュメント)
「このクラスのメンバ変数を全部 const にしたいなぁ~」なんて毎日のことですよね.
そんなときに便利なのが矩形ビジュアルモードです.
# ノーマルモード
|var foo
var bar
var baz
↑ の状態で<Ctrl>ve3jc
と入力すると,
# 挿入モード
| foo
bar
baz
↑ のようにvar
が全て消えて挿入モードに入るので,挿入したい文字列(const)の後に<Esc>
を入力すると,
# ノーマルモード
|const foo
const bar
const baz
簡単に変更が行えます.
f, Fコマンド
(参考:left-right-motions | Vim日本語ドキュメント)
「この関数の3番目の引数のところまで移動したいなぁ~」なんて日常茶飯事ですよね.
そんなときに便利なのがf
, F
コマンドです.
# ノーマルモード
|def my_function (first, second, third):
pass
↑ の状態で2f,
と入力すると,
# ノーマルモード
def my_function (first, second|, third):
pass
f
に続けて移動したい先の文字を入力するとカーソルが移動します.
F
の場合は,左の方向に検索してくれます.
派生コマンドとしてt
, T
, ;
, ,
があります.
おわりに
まだまだ Vim を使いこなせていませんが,もっと精進したいと思います.