有没有人知道vim插件或脚本将特殊字符转换为相应的HTML实体?

时间:2010-06-16 15:53:55

标签: vim

我为企业客户开发网站,因此我们看到®,™等等。有时我会粘贴大量的副本,甚至可能包含漂亮的引号(“”)或来自文字处理程序的其他奇怪字符。

所以,我的问题是:有没有人知道vim插件或脚本可以一举将所有这些字符转换为html实体?

我认为这涵盖了实体的所有基础: http://web.forret.com/tools/charmap.asp

因此,对于上述字符,它们将替换为®™“”等。

我尝试了htmlspecialchars vimball(http://www.vim.org/scripts/script.php?script_id=2377),但没有骰子。它只执行像PHP htmlsepcialchars函数的替换,替换html冲突的字符,并且不包括任何其他特殊字符。

4 个答案:

答案 0 :(得分:7)

我会推荐Tim Pope的unimpaired插件。它提供commands to encode and decode html entities,分别使用映射:[x]x

答案 1 :(得分:2)

Perl对于这类事情更好。将文件粘贴到vim中并运行:

:%!perl -p -i -e 'BEGIN { use Encode; } $_=Encode::decode_utf8($_) unless Encode::is_utf8($_); $_=Encode::encode("ascii", $_, Encode::FB_HTMLCREF);'

甚至更好:

%!perl -p -i -e 'BEGIN { use HTML::Entities; use Encode; } $_=Encode::decode_utf8($_) unless Encode::is_utf8($_); $_=Encode::encode("ascii", $_, sub{HTML::Entities::encode_entities(chr shift)});'

(HTML :: Entities是我系统上HTML :: Parser的一部分)

答案 2 :(得分:1)

你可以将它作为一个宏来做,你的.vimrc就是这样的(我会让你填写其余的实体;-)):

let @a=':%s/á/\á/g^M:%s/é/\é/g^M:%s/í/\í/g^M ... '

请注意,^ M是使用 Ctrl + V Ctrl + M 输入的特殊字符。< / p>

答案 3 :(得分:0)

我很惊讶Vim无法做到这一点,没有插件(甚至unmpaired.vim)也无法转换所有HTML实体。

So I made a plugin

用法:在正常模式下,]he<motion>将运动中包含的字符转换为正确的HTML实体。将转换(几乎任何)角色。