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

「実践Vim」を読んで得られた考えをまとめてみた1(ドットコマンド・ノーマルモード)

$
0
0

はじめに

Vimは敷居の高いエディタで、習得に時間がかかります。
しかし、一度習得してしまえば編集効率・速度は劇的にアップします。
数年前に購入した書籍に「実践Vim」があります。
Vimレベルアップの大きな手助けとなりました。
ここでは一通り読んで、得られた考えをまとめています。
長いので何度かに分けます。また、全てはやりません。

各TIPのまとめ

第1章 Vimのやり方

TIP1: ドットコマンドとは

→.はマイクロマクロ

.は「最後に行った変更(テキストに変更を及ぼすコマンド1単位)を繰り返す」コマンドです。
例えば、

  • 現在行から3行削除(3dd)
  • 現在行を「-----」に変更(cc-----[esc])
  • 1単語を消去(dw)
  • 「=」の前まで削除(dt=)
  • 行末に「 // TODO」を追記(A TODO[esc])

「最後に行った変更」は処理として記録されていて、つまりは短いマクロと考えられます。
「最後に行った変更」の内容によってはマクロの再実行がやりにくくなるのです。
繰り返しやすいようにキーストロークを工夫することが効率アップにつながります。

TIP2: DRY(Don't Repeat Yourself)

→.を使いやすいコマンドを考える

vimは移動のコマンドが多数存在します。
さらには複合コマンドも存在します。
例えばAを押すと行末にカーソルを移動して挿入モードに入りますし、
ccを押すと現在行を削除してから挿入モードに入ります。
どのコマンドを使えば.が使いやすくなるかを考えることが効率アップにつながります。

TIP3: 一歩下がって、三歩進む

→.を使いやすいコマンドを考える

TIP2と同じです。
例では「+」をsで消した上で「 + 」を入力しています。
.を使いやすくするための一例です。

TIP4: 実行して、繰り返して、元に戻す

→ もとにもどるコマンドを覚えて繰り返し過ぎたときに

巻き戻しを覚えることで大胆なカーソル移動や編集が実現できます。
不要なところで.を押してしまったときに、uで元に戻れます。
移動系のコマンドでも同様です。
単語単位の移動で、wを連打して進みすぎたときにbで戻れますし、
nの場合はNが反対方向への移動になります。

TIP5: 手作業での検索と置換

→*で入力せずにカーソルにある単語を検索。nと.の組み合わせ。

nと.の組み合わせは私がVimを使った編集で効率を初めて実感できた内容です。
vimには置換用のコマンド(:s)もあります。一方で特定のフレーズだけを置き換えたいときなど、nで検索し、カーソルを当てた単語を.で置き換えるということもよくやります。
一番最初にcwで単語を置き換えると後は.で繰り返せるわけです。

TIP6: ドットの公式

→理想は移動に1キーストローク、編集に1ストローク

特に移動のキーストローク数をいかに減らすか、ですね。

第2章 ノーマルモード

TIP7: 埃を払って一息つこう

→ ノーマルモードは、構想を練るためのもの

TIP8: アンドゥはひとまとめに

→ アンドゥの単位を考えて意図的に挿入モードを抜ける

vimのアンドゥは「1つの変更」単位です。
挿入モードに入ってテキストを編集、抜けるまでの操作も1つの単位となります。
ということはどこで挿入モードを抜けるかを考えることでアンドゥの単位をコントロールできます。

TIP9: 変更を繰り返し可能なものにする

→.を使いやすいコマンドを考える。

TIP2と同じです。

TIP10: 回数指定を使って簡単な計算を行う

→ctrl-X, ctrl-Aは(カーソルに数字がなくても)直近の数字の計算を行う。

TIP11: 繰り返しで済むなら、回数を指定しない

→回数指定より繰り返しの方が便利なことも

2dwは単語2つ分を削除しますが、数えるのが面倒な場合、dwで1単語を消してから.で繰り返す方が楽なこともあります。

TIP12: 統合して統治せよ

→vimの操作はオペレータとモーションの組み合わせ

これに気付くと、コマンドの習得が速くなります。
まずはオペレータとなるキーを押してからモーションとなるキーを押すことで
vimの編集は成り立っています。
例えばdGは、d(削除のオペレータ)とG(最終行までのモーション)と分解して考えます。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



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