VIM for (PHP) Programmers の訳 (1)
前に書いた、Andreiの "VIM for (PHP) Programmers" のスライドを勉強がてら訳していきたいと思います。いつも、他の人が、vimの便利な機能をまとめているのを見て、すげーべんりー、と思って1回使ってみて、そのまま忘れてしまうということをやってしまうので、少しは記憶に定着させたいなぁと。
訳がめちゃくちゃですがVim7で動作確認しながら書いてるので、だいたいニュアンスくらいはあってるはず。
- この記事シリーズまとめはこちら: (PHP)プログラマのためのVIM (まとめ) - おぎろぐはてな
イントロ
どうやって、vimをクイックに終了させますか?
- ZZ (保存して終了)
- ZQ (保存せずに終了)
とやるか、それとも
- :nmap ,w :x<CR>
- :nmap ,q :q!<CR>
として、,w と ,q で済ませるか。
TIPS: set showcmd で、入力中のコマンドが表示されます
カーソル位置
- シンプル: CTRL-G
- 詳細 - gCTRL-G
- 常に表示させておきたいなら、:set ruler
- カーソルの現在行、先頭からの文字数、ファイルの行全体のどこを表示しているかのパーセント表示
- rulerformatで設定できる
CTRL-G のとき "tmp.php" line 3 of 5 --60%-- col 1 gCTRL-G のとき Col 1 of 7; Line 3 of 5; Word 3 of 8; Byte 20 of 48
カーソル移動
- h/j/k/lでカーソル移動
- 先頭・末尾へは gg と G
- n行へのジャンプは nG か ngg
- nパーセントの位置へのジャンプは n%
- 行の先頭の非空白文字へは ^
- 次行の先頭の非空白文字へは <CR>
- 前行の先頭の非空白文字へは -
マーク
- 位置をブックマークできます
- m<文字> で、現在の位置を指定した文字に設定できる
- `<文字> で、設定した位置へジャンプ
- 大文字と小文字の取り扱い
- 小文字のマーク: ローカルバッファのマーク
- 大文字のマーク: グローバルなマーク。別のファイルにいれてたら切り替えてジャンプできる
- :marksで設定されているマークが一覧表示
- テキストを変更するのにすごくべんり
- まず、マークする (maと叩く)
- そしたら、こんなことができる
- c`a - カーソル位置からマークした位置までの間のテキストを変更
- d`a - カーソル位置からマークした位置までの間のテキストを削除
- ='a - カーソル行からマークした行までの間のテキストを再フォーマットする
補足: `だと、マーク位置、'だとマーク行が対象になる。
- どこにでもジャンプできるようになった!で、どう戻るの?
- ``で直前に移動したポジションを行き来できる
- m` して ` にマークもできる
- そうしたら、どこかに移動して、``でそのポジションに帰ってこれる
- 注: この動き確認できなかった。。意味違う?
tip: CTRL-O と CTRL-I で、ジャンプした履歴を行き来できる。
- '. と `. は、最後に編集した行・位置にジャンプしてくれる。
挿入
- Insertモードに入る方法はどれだけある?
- i I a A o O s S c C
- i: カーソル位置
- I: カーソル行先頭
- a: カーソルのある文字の後
- A: カーソル行末尾
- o: カーソル行の次行
- O: カーソル行の前行
- s: カーソル位置の文字を削除してから (=cl)
- S: カーソル位置の行を削除してから (=cc)
- c: 変更オペレータ。cwとかで叩いて、dと同じように削除して、挿入モードに入る。(但し、"abc def"にaのポジションからcwを行ったとき、dwと動きが異なり、abc後の空白は残される)
- C: カーソル以降行末まで削除してから (=c$)
- 加えて r Rも (上書きモード)
- r : カーソル位置の1文字だけを上書きして修正を加える("typo"とあるときに、oにカーソルを合わせて、reとすれば、typeになってコマンドモードに戻る)
- R : 上書きモードに入る
- i I a A o O s S c C
- gi: 信じられないぐらいべんり!
- 最後に挿入モードを抜けた位置に帰ってくる
- シナリオ: なんか編集していて、何かを参照しようと一旦Insertを抜けて(例えば検索とか)、そのあとgiで元の位置に戻って編集を続ける
- その他便利なもの (挿入モードで実行)
- CTRL-Y と CTRL-E: 前の行・後の行の文字を1文字複写する
- CTRL-A: 前回の挿入モード時に入力した内容を挿入する
- CTRL-R=: 組み込みの計算機。CTRL-R=10*1024*1024<CR>で、10485760が挿入
- CTRL-TとCTRL-D: インデントを入れたり、減らしたり
【CTRL-Yの例】 こういうのを入力したいときに使います syntax_highlighter_ini->highlight_comment = INI_STR("highlight.comment"); syntax_highlighter_ini->highlight_default = INI_STR("highlight.default"); syntax_highlighter_ini->highlight_html = INI_STR("highlight.html"); syntax_highlighter_ini->highlight_keyword = INI_STR("highlight.keyword"); syntax_highlighter_ini->highlight_string = INI_STR("highlight.string"); まず1行入力 syntax_highlighter_ini->highlight_comment = INI_STR("highlight.comment"); * → 次の行のここでCTRL-Yすると、前行が1文字ずつコピーされてく s sy ... ここまで持ってきて syntax_highlighter_ini->highlight_ 自分でhtmlと入力 syntax_highlighter_ini->highlight_comment = INI_STR("highlight.comment"); syntax_highlighter_ini->highlight_html * ←ここまでもってきたらまたCTRL-Y またここまで持ってきてから手入力 syntax_highlighter_ini->highlight_html = INI_STR("highlight. できあがり! syntax_highlighter_ini->highlight_html = INI_STR("highlight.html");
13/77
うわ。まだぜんぜんおわんないよ。"for PHP programmers"の肝心なとこに入ってないよ。
つづく。