サークルでAdvent Calendarを作ることになったので、何を書こうかと悩んだ挙句、
Vimについて書くことにしました。
でもこんなこと書くと怖い人が怖いこと言ってくるかもしれないので、とりあえず覚え書きということにします。
宗教上の理由で、見るわけにはいかない人がいるかもしれませんが、そこはそこ、ということで。
間違っている部分もあるかもしれないので、その時は温かい目で見守ってやってください。
カーソルの移動
Normalモード時に、f
を押して、任意の文字を打つと、その行の任意の文字の位置まで移動します。
hogehoge = piyopiyo
上記の場合は、行頭でf p
と入力するとpiyopiyo
のp
の位置まで移動します。
ちなみに、f
をt
にすると移動が一つ手前で止まります。
さらにちなみに、F
とT
にすると逆向きにカーソルが移動します。
Vimは結構、大文字と小文字(Shiftを使うかどうか)で動作が逆になるのが多いです。
大文字小文字
Visualモード時に、U
を入力すると、大文字にすることができます。
たぶんUpperの略かなと思いました(たぶんたぶんたぶん)
単純なVisualモードへはv
、一行選択はV
、矩形選択はCtrl-v
でどうぞ。
hogefoobar
上記の状態でfoo
をVisualモードで選択中だとします。
矩形選択はCtrl-v
です。
↓↓↓そこでU
を入力すると↓↓↓
hogeFOObar
↓↓↓ちなみに行全体を選択した状態で~
(Shift-^)を入力すると↓↓↓
HOGEfooBAR
大文字小文字が入れ替わります。
↓↓↓さらにちなみに行全体を選択した状態でu
を入力すると↓↓↓
hogefoobar
全部小文字になります(アレUpperの略だと思ってたんだけど……)
インクリメント・デクリメント
タイトル通りです。数字をインクリメントできます。
Normalモードで、Ctrl-a
でインクリメント、Ctrl-x
でデクリメントです。
適当な数字に対してやってみてください。
ちなみに、普通の数字に対しては10進数ですが01
のようなものに対しては8進数、0x01
のようにすると16進数として解釈されます。
範囲指定して削除・編集
voidhoge(inta,intb){puts("hogehoge");}
C言語で、上記のような関数があったとします。
引数を全部消したい!出力する文字を全て変えたい!!
こんなこと、あると思います。
そんな時に役立つのがdi(
、ci"
です!
まあ、このコマンド(?)はパッと見意味不明ですよね。
ここから解説していきます。
まずはdi(
の方です。
これは、Delete Inner (
、(
で囲まれた部分を消せ。というコマンドです。(~~~)
のようなカッコで囲まれた場所でやるとカッコ内のものが消えます。
引数が書いてあるカッコの中でやってみてください。
次に、ci"
です。
これは、Change Inner "
、"
で囲まれた部分を変更しろ。というコマンドです。
Deleteの方と違うのは、コマンドの実行後に、自動的にInsertモードに入っていることです。
だからChangeなんですね。たぶん。
もちろん(
や"
だけでなく、{
[
<
でもできます。アルファベットとかはできないっぽいので、
カッコ系じゃないとダメなんでしょうね。
上記のコマンドを、もっと狭い範囲で行いたいなら、daw
でどうぞ。
こちらは、Delete a Word
で、一単語分削除します。
もちろん消す
というよりは編集
したい場合は、caw
とするといいでしょう。
思いつくままに、Vimのコマンドによる文字列や数値に対する処理を書いてみました。
いががでしたでしょうか。
コマンドの効果を言葉で説明するのが予想以上に難しく、読みづらい部分もあるかと思いますが、
そこは申し訳ないっす。
今回上げたコマンドを、記憶の片隅にでも置いといて貰えたら、コーディングがちょっとだけ
速くなるかもしれません(たぶん)
これを機に、Vimに興味を持ってくれる人が出てくれると嬉しいです。
自分も、まだまだ精進して行きたいと思っています。
以上。