HTML のスペシャルキャラクタをエスケープする Vim スクリプトを書いた


HTML のスペシャルキャラクタをエスケープする Vim スクリプトを書いた。

:[range]call EscapeHTMLSpecialChars()

として使う。

<p>hoge & foo</p>

をエスケープすると

&lt;p&gt;hoge &amp; foo&lt;/p&gt;

となる。関数の内容は以下のとおり。初めて Vim スクリプトを書くにあたり、他のスクリプトを参考にしたり usr_41.txt を読んだりした。

function! EscapeHTMLSpecialChars() range
let n = a:firstline
while n <= a:lastline
let target = getline(n)
let target = substitute(target, "\&", "\\&amp;", "g")
let target = substitute(target, "<", "\\&lt;", "g")
let target = substitute(target, ">", "\\&gt;", "g")
call setline(n, target)
let n = n + 1
endwhile
endfunction

当初は以下のように書いたのだが、マッチする文字が無い時に出るエラーメッセージが邪魔なので、組み込み関数を使った。

function! EscapeHTMLSpecialChars()
s@&@\&amp;@g
s@<@\&lt;@g
s@>@\&gt;@g
endfunction
カテゴリー: Vim   パーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>