XML (HTML) の特殊文字をエスケープするVimスクリプトを書いた
- 2009-09-29
- カテゴリ: Client Side
- タグ: Vim Tips
XMLやHTMLの5つの特殊文字 (&, <, >, ', ") を定義済みのエンティティ (&, <, >, ', ") に変換するVimスクリプトを書いてみた。
5つの文字を置換するだけだから簡単そうに思えるけど、選択範囲だけを対象にしようとするとなかなか難しくて、今まで納得のいくものを作れずにいた。それが、たまたま今日挑戦してみたら、そこそこいい感じのスクリプトが書けたので、記念にブログポストしてみる。
vnoremap <Leader>e "xx:call <SID>EscapeXml('x')<CR>"xP
function s:EscapeXml(regname)
let x = getreg(a:regname)
let x = substitute(x, '&', '\&', 'g')
let x = substitute(x, '<', '\<', 'g')
let x = substitute(x, '>', '\>', 'g')
let x = substitute(x, "'", '\'', 'g')
let x = substitute(x, '"', '\"', 'g')
call setreg(a:regname, x)
endfunction
使い方やコードの解説は続きで。

