HTML のスペシャルキャラクタをエスケープする Vim スクリプトを書いた
April 28, 2008category: Vim
HTML のスペシャルキャラクタをエスケープする Vim スクリプトを書いた。
:[range]call EscapeHTMLSpecialChars()
として使う。
<p>hoge & foo</p>
をエスケープすると
<p>hoge & foo</p>
となる。関数の内容は以下のとおり。初めて Vim スクリプトを書くにあたり、他のスクリプトを参考にしたり usr_41.txt を読んだりした。
function! EscapeHTMLSpecialChars() range
let n = a:firstline
while n <= a:lastline
let target = getline(n)
let target = substitute(target, "\&", "\\&", "g")
let target = substitute(target, "<", "\\<", "g")
let target = substitute(target, ">", "\\>", "g")
call setline(n, target)
let n = n + 1
endwhile
endfunction
当初は以下のように書いたのだが、マッチする文字が無い時に出るエラーメッセージが邪魔なので、組み込み関数を使った。
function! EscapeHTMLSpecialChars() s@&@\&@g s@<@\<@g s@>@\>@g endfunction

comments