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

April 28, 2008category: 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

comments (0)このエントリーを含むはてなブックマークはてなブックマーク - HTML のスペシャルキャラクタをエスケープする Vim スクリプトを書いた

comments