TL;DR
viのもっとも便利な機能はhjklによるホームポジションに手を置いたままのカーソル移動ですが(俺調べ)
次に手放せない要因になっているのは、マークと名前付きバッファです。
操作方法については色々ネットに情報が出ていますが、具体的な使用ケースについてはあまり情報が無いように感じたので個人的に便利だと思っている使い方を共有してみます。
今回はまずマークについて
しおりとしてのマーク
コマンドは色々ありますが、私が使うのは以下だけです。
m[a-zA-Z] カーソル位置をマークする
'[a-zA-Z] 指定のマークの行頭に移動する
:marks マーク一覧。なにをマークしたのか忘れた時に使う。
個人的にはしおりみたいなものだと思っています。しおりを挟んだ箇所にいつでも一発で戻れるという。
よくあるとーってもスコープが長い関数の中を追っている時に、とりあえず追っている変数の宣言箇所に
maと素早くaでマークして、そこに飛びたくなったら、現在地をmmとmでマーク(m連打でマークできるのがポイント)
'aで宣言部に戻り'mでまた元の場所に戻るとかよくやります。
変数の名前を連想する名前でマークすると結構な数を覚えていられるのでおすすめです。
たとえば、isActive... てな場所であればmiでiとマークするとか。
範囲指定としてのマーク
ビジュアルモードが使えればほとんどいらないんですが、そこは気分で使い分け。ビジュアルモードはvim用なので、素のviを触る時に便利です。そんなことはほぼないけれど..。今でもhp-uxのviはposixなのかな?
範囲指定してヤンク(コピー)なら、コピーを開始したい位置に移動してすかさずmm。コピー終了したい位置に移動してy'm
範囲指定してデリートしたいなら、同様の操作を行いd'm
範囲指定して置換したいなら、検索開始位置でma,検索終了位置でmbして:'a,'bs/[検索]/[置換]/
ぜひお試しあれ。