覚えとくと便利かもしれないVimのTips
適当に思い付いたものを書いてみる。
CTRL-X CTRL-L
行単位での補完。まぁ該当の行でyyしてpして貼り付けでもいいかもしれないけど、移動するの面倒な場合もあるし。以下、自分のvimrcで「n CTRL-X CTRL-L」した例。
ちなみに俺がこれを一番使うときはRSpecのdescribeの行を補完する時かな。こんな感じ。
describe "hogehoge" do
end
desCTRL-X CTRL-L
↓
describe "hogehoge" do
んで、hでちょこちょこっと”の中に移動してdi”で”の中を削除する感じ。
di”
こっそり上で登場してるけど”で囲まれた文字列をd(削除)する。da”だと”も含めて削除。ちなみにこれはテキストオブジェクトっていうVim7からの機能で他にも色々パターンがあって、個人的にVimの機能の中でも特別気に入っている。ちゃんと説明すると長いのでいくつか例だけ示す。- di"
- "の中を削除
- da"
- "も含めて削除
- yi"
- "の中をコピー
- ya"
- "も含めてコピー
- di(
- ()の中を削除
- da(
- ()も含めて削除
- di{
- {}の中を削除
- da{
- {}も含めて削除
gf
カーソル以下のファイル名を開いてくれる。requireやinclude、ファイルをオープンしたりする処理のところで便利。
require "hoge"
hogeのところでgfするとhoge.rbを開く。
CTRL-AとCTRL-X
VimM#3でamachangが感動してた気がする。カーソル以下の数字をインクリメントとデクリメントしてくれる。ちゃんと1000とかも1001や999にしてくれるよ。マクロで多用するかも。guuとgUUと~
guuはカーソル行の文字を全部小文字に、gUUは全部大文字に。~はカーソル以下の文字を小文字なら大文字に、大文字なら小文字に。書いといてなんだけどあまり使った記憶ないな、これ。
:!
:!を使うと外部コマンドを叩くことができる。単体だと結果を返すだけなので頭に.(ドット)を付けて結果を挿入したりする。単体で使うときはlsの結果を見るときが多いかも。一々screenのウィンドウを移動しなくて済む。なんか段々書くのが面倒になってきたので例で示す。追記: kanaさんより指摘がありました。挿入はr!〜ですね。
> 単体だと結果を返すだけなので頭に.(ドット)を付けて結果を挿入したりする。 嘘。:{range}!{cmd}はフィルタリング。結果的にそうなるケースはあるけれど意味は違う。本当に挿入するなら:r!{cmd} (:read !{cmd})。
- :!ls ~
- ls ~の結果が表示される
- :.!date
- date結果が挿入される
- :%!sort
- 今開いてるファイルをsortした結果に書き変わる
- :%!grep hoge
- hogeが含む行だけに書き変わる
- :!ruby -c %
- 今開いてるファイルをrubyの構文チェックに通す。PHPとかでも似たようなことができる