我为企业客户开发网站,因此我们看到®,™等等。有时我会粘贴大量的副本,甚至可能包含漂亮的引号(“”)或来自文字处理程序的其他奇怪字符。
所以,我的问题是:有没有人知道vim插件或脚本可以一举将所有这些字符转换为html实体?
我认为这涵盖了实体的所有基础: http://web.forret.com/tools/charmap.asp
因此,对于上述字符,它们将替换为®
,™
,“
,”
等。
我尝试了htmlspecialchars vimball(http://www.vim.org/scripts/script.php?script_id=2377),但没有骰子。它只执行像PHP htmlsepcialchars函数的替换,替换html冲突的字符,并且不包括任何其他特殊字符。
答案 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实体。
用法:在正常模式下,]he<motion>
将运动中包含的字符转换为正确的HTML实体。将转换(几乎任何)角色。