19
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vimを丸暗記する前に

Last updated at Posted at 2017-06-16

はじめに

Vimのコマンドをまとめた記事はよく見かけますが、丸暗記しようとすると余計大変です。
3行コピーペーストするのは、3yypで、"の中を消すのはdi"で、ファイル全選択はggVG・・・って複雑化してくると困ります。

丸暗記する前に、基本的な考え方を覚えて、効率よくコマンドを覚えましょう。

コマンドの基本

コマンドを丸暗記する前に、2つの考え方を意識すると、コマンドを覚えやすくなり、応用も効くと思います。(個人の感想です)

1. コマンドは回数と命令と範囲の組み合わせ

Vimのコマンドはざっくり以下のような形になっています。

(回数) + (命令) + (回数) + (範囲)

命令と範囲について

例えば、文字を削除するコマンドはdを使います。これをオペレータといいます。上の(命令)部分です。
次の単語の先頭に移動するコマンドはwです。これを範囲として使ってみましょう。
コマンドは、dwとなりますね。
現在の地点から、次の単語の先頭まで文字が削除されました。

文字を選択し、ビジュアルモードに入るコマンドはvです。
次の単語の先頭に移動するのはwでした。
ではvwというコマンドの結果は…?

こんな感じで、セットで覚えるというよりもあくまで組み合わせなんだよっていうのを最初に意識してほしいです。

回数について

コマンドや範囲の前には数字を付けることができます。
数字分だけの後ろの行動を繰り返すイメージです。

wは1単語移動するコマンドでした。
3wとすると、3単語移動できます。

では、3つ後ろの単語までを削除するコマンドは?
d3wです。
さらにそれを5回繰り返したければ、5d3wとなります。

こんな感じで、数字は様々なコマンドに応用できるんだよってことです。

2. 小文字のコマンドと大文字のコマンドは範囲の違いが多い

あるキーで出来ることを大文字にすると、同じ動作の範囲が異なるコマンドになることが多いです。
なので、両方を覚えるというよりは、まずは小文字のコマンドを覚え、徐々に大文字と使い分けるといいと思います。
以下は、小文字コマンドを大文字にした時のパターン例です。

パターン1:大文字にすると行指定になる

dというコマンドは、削除を行うためのコマンドですが、Dとすると、1行削除になります。
同様のものに、I,A,V,Cなどがあります。
「末尾までになる」と解釈するならば、Gも含まれるかもしれません。

パターン2:大文字にすると「単語」が空白単位になる

wは次の単語の先頭まで移動します。ハイフンやカンマなども単語の区切りとみなします。
Wとなると、単語の定義が代わり、空白が来るまでは1単語となります。
BEが同様です。

パターン3:大文字にすると逆方向になる

検索後にnを押すと、次の候補を検索することができます。
Nとすると、逆方向です。
同様に、F,X,O,Pなどは、前後が逆になっていると感じます。

上記3パターンに当てはまりませんが、Rも同じ動作の亜種のようなコマンドだと思います。

パターン4:小文字と無関係

もちろん、すべての大文字に当てはまるわけではなく、大文字が小文字の動作と無関係に独立しているものもあります。
Jや、H,M,Lなどが該当します。
個別に覚えましょう。

結論

二つの異なるコマンドをくっつけて覚えるより、別々で覚えたほうが応用効くと思う!

19
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?