おぎろぐはてブロ

なんだかんだエンジニアになって10年以上

(PHP)プログラマのためのVIM (4) - コピー/削除/貼り付け、レジスタ

コピー/削除/貼り付け

  • y - yank(コピー)、d - 削除、p - 後に貼り付け、P - 前に貼り付け
  • ]p, ]P - インデントを保持して前後に貼り付け
    • 補足: (前に貼り付け) [p = [P = ]P
  • 貼り付けに再フォーマット・インデントをマッピングして便利にする
:nnoremap <Esc>P P'[v']=
:nnoremap <Esc>p p'[v']=

レジスタ

  • レジスタ(registers): 多目的なクリップボード
  • 知らないうちに使ってるよ
  • ydコマンドはレジスタにコピーしている
  • 無名と名前付き
  • yank/delete/pasteの指定の前に "<char> することで、<char>の名前を付けてレジスタに登録できる
  • 大文字のレジスタにコピーすると、元から入っていた内容に追記される。(小文字だと上書き)
  • "wyy - 現在行をレジスタwにyank
  • "WD - 現在行のカーソル以後を切り取り、レジスタWに追記
  • "wp - レジスタwの中身を貼り付け
  • CTRL-Rw - レジスタwの中身を挿入 (挿入モードで)
  • スペシャルなレジスタあります
    • "0 - レジスタを使わずに(→"wとか名前を付けずに)、直近にyankした文字列
    • "1 - レジスタを使わずに、直近に削除した文字列 (ただし、1行未満のときは"-が使われる)
    • "2"9 - 削除するたびに、"1からシフトしてくる
    • ". - 最後に挿入したテキスト
    • "% - 現在のファイル名
    • "_ - ブラックホールレジスタ (入れたら取り出せず、他のレジスタに影響を与えない)
  • レジスタにマクロを記録できる
    • q<char> - レジスタ<char>に、入力した文字を記録開始
    • qで、記録を停止
    • @<char> - レジスタ<char>のマクロを実行する
    • @@ - 最後に実行したマクロを繰り返す
  • :regで、いまレジスタに何が入っているかを確認できます
:registers の例


ということで、32ページ/全77ページ

半分行ってない。。