|
|
||
なんで呼んでくれないの!
ただ、変数を書き換えるには再定義しないとダメなようでした。
Sugamo.css Vim分科会まとめ - Archiva
同一変数には異なる型の値を再代入できないが正解(:help E706)。スクリプトいじくってるときにそこではまったんじゃないでしょうか。提示されてるコードなら:%s/out2/out1/gしても動作するはずです。
どうしても再代入したければ:unletしてから:letすること。もっとも、そんなことをする機会は滅多にありませんし、実際にそういうことをしたいときは何かしらコードの方が不味いのでそもそもしませんけどね。
:letについて、ちょっと勘違いしてまして、Perlで言う「my $hoge」みたいなもんだと思ってたんですよね。なので「let l:out」のあとに「l:out = hoge + l:out」ができなくてうがーっ、みたいにハマってました。「let l:out = hoge + l:out」ならできました^^;
さらに「:%s/out2/out1/g」を入れる場所が良く判らなかったのですが、substitute()のパターンを弄ってsubstitute(l:str, '^\s\+\(.\+\)', '<li>\1<\/li>', '')のような感じで1行にまとめ、再代入なしになりました。
しかし、substitute()で複雑なマッチパターン多用すると、やっぱり重いですかね?
「提示されてるコードなら:%s/out2/out1/gしても動作するはずです。」 = 「例示されてるコードのout2をout1に置き換えても動作するはずです。」です。コードに直接挿入するということではないです。
> しかし、substitute()で複雑なマッチパターン多用すると、やっぱり重いですかね?
基本的に気にする必要はないです。変態的なパターンを書いて大量にマッチングを行うならば別ですが、そんなことは滅多にありません。
ちなみに再代入を繰り返して段階的に文字列を整形していくやり方だと、見た目はすごく判りやすいのですが、VimScriptではバッドノウハウだったりしますか? つまり一度に複雑なパターンを避けて、substitute()を何度かに分けて整形していく、とかです。
いまのところ途中で型変換しなければ大丈夫! みたいに解釈してます。
Vimでバッドノウハウというのは:mapと:noremapの違いとそのネーミングセンスなどで、Vim scriptでバッドノウハウというのはVim scriptそのものです。
いろいろ書いてみようと思います。