VIM for (PHP) Programmers の訳 (2) - 削除・検索
CSS弄らないときたないなぁ。。
- この記事シリーズまとめはこちら: (PHP)プログラマのためのVIM (まとめ) - おぎろぐはてな
削除
Backspaceキーを解放 (削除できるように)
:set backspace=start,indent,eol
検索
- 検索は重要だよね
- どのように検索してる?
- f / F / t / Tは分かる?
- *と#はどう?
行の中での検索
- f<char> / F<char>: 指定した文字を、fは現在位置から右側に、Fは左側に探していって、マッチした箇所にカーソルを移動。2feとすれば、現在位置から
e
を探して、2つ目に移動する - t<char> / T<char>: 基本はf/Fと同じだが、カーソルの位置が、探す文字の1つ手前になる。
- 例
- df;で、現在のカーソル位置から、その後
;
までを削除する - cT$で、現在のカーソル位置から、前方の
$
の手前までを削除する (return $abc;
で、あ、変数名間違えたとreturn $
まで戻したいときとか)
- df;で、現在のカーソル位置から、その後
単語の検索
- カーソル下の単語を検索してジャンプしたい
- */#: カーソル位置の単語を後方/前方に検索
- g*/g#: 上と同じくカーソル位置の単語を検索するが、検索時に単語として検索をしない。(単語の一部にもマッチさせるようにする。例えば、sheetで検索して、stylesheetにもマッチさせるにはこっちでないとダメ)
- カーソル下の単語が含まれる行を探したい
- [I/]I: カーソル下の単語を含む行を全て表示する。[Iはファイル先頭から、]Iは現在のカーソル位置から。
- (補足: いまいち、どういう順序で探してるのか分かんなかった)
- もっと便利に使うには、行にジャンプするようにマップしたらいい
- (補足: んー。動かなかった。理解不足。。)
- [I/]I: カーソル下の単語を含む行を全て表示する。[Iはファイル先頭から、]Iは現在のカーソル位置から。
:map <F5> [I:let nr = input("Which one: ") <Bar>exe "normal " . nr ."[\t"<CR>
正規表現
- もちろん正規表現も使える
- /<pattern>: patternで前方検索
- ?<pattern>: patternで後方検索
- n: 最後の / か ? を繰り返す
- n: 最後の / か ? を逆方向に繰り返す
- 検索オプションを設定
- :set wrapscan - ファイル末尾まで検索したら、先頭から続ける
- :set incsearch - インクリメント検索を有効にする。検索条件を入力中にも、マッチする文字列を強調表示
- :set ignorecase - 大文字小文字の区別をしない
- 検索時に条件を変更するには、パターン中で \cで大文字小文字の区別無しを強制、\Cでは反対で大文字小文字の区別を強制
- 全ての検索・ジャンプは移動の引数として使えることを思い出そう
- d/^# - 次のコメント(#から始まる行)まで全部削除
- y/^class/;?function - 現在位置から最初に見つかるclassの、手前のfunctionまでをyank