実践Vim(Practical Vim)を読んで
emacsからという禁忌の乗り換えを行っておよそ1年程度が経過した。
ある程度は使えるようになってきたか、、、?と思っていたところで
名著と名高い”実践Vim”を読んでみた。
まだ6割(感覚値)もVimの実力を発揮できていないと感じたので
これは、今後個人的に取り入れるべきと思ったTipsをメモとして入力する。
完全に覚書で前提知識などを書いていなかったりするので万が一
これをみて参考にされる際などはご留意お願いしたい。
register貼り付け
yankの保存先
"0 レジスタにはyankされたものが入って、d
コマンドでカットされた
ものは入らないので、置換する際に
yiw
して目的の単語に移動してdiw"0p
と入力すればd
コマンドを利用しても問題ない。
(dでカットされた値は”一時レジスタに格納される)
ただ、自分も筆者の方がおっしゃられているのと同様に
ve
でヴィジュアルモード選択して上からp
を押すのが最も美しく思える。
visual モード
gv
コマンドの活用
シンプルにこれは全く使っていなかったが有用だと感じた。
ただ、qwerty配列においてどういう運指が最適なのだろうか、、
g@右人 -> v@左人 とかだろうか、、
o
キー
始点と終点を入れ替える。強力無比に思えるが全く知らなかった。
:g(lobal)/{pattern}/[cmd]
の活用 (TODO アイテムの収集)
今回のポイントとなるコマンドは以下である。
:g/TODO/yank A
大文字Aとなっているのは理由がある。
複数行をレジスタに格納するためだ。
もし、小文字のaとだけ入力してしまった場合最後の1文のみしか
レジスタには保存されていない。
以下のような例文があったとして
Markdown.dialects.Gruber = {
lists: function() {
// TODO: Cache this regexp for certain depths.
function regex_for_depth(depth) { /* implementation */ }
},
"`": function inlineCode( text ) {
var m = text.match( /(`+)(([\s\S]*?)\1)/ );
if ( m && m[2] )
return [ m[1].length + m[2].length ];
else {
// TODO: No matching end code found - warn!
return [ 1, "`" ];
}
}
}
"ap
の実行結果として
小文字a の場合
// TODO: No matching end code found - warn!
大文字A の場合
// TODO: Cache this regexp for certain depths.
// TODO: No matching end code found - warn!
といった結果となる。
これは:argdo
と組み合わせることでプロジェクト全体のTODOを集めることもできる。
また、qaq
といったレジスタを空にするといった前処理も必要となる。
あとがき
数ポイント今後使いたいなと思ったTipsを覚書として記した。
何回か手を動かしながら読んでみて、まだ取り入れられていないものなど
頭の片隅に置いておき、使うべき場面が来た際に索引できるといいかも。