有没有简单的方法将重音和特殊字符编码为html或hex字符?随着Vim。
原文
áhhíhí
到html:
& aacute; h h& iacute; h& iacute;
到十六进制:
\ xE1h h \ xEDh \ xED
答案 0 :(得分:4)
对于HTML编码,它取决于您希望的彻底程度。一种方法是使用Perl模块HTML::Entities
。它彻底而快速,但相当沉重:
nnoremap <silent> <Leader>h :silent %!perl -CIO -MHTML::Entities -pe '$_=encode_entities $_'<CR>
vnoremap <silent> <Leader>h :<C-u>silent '<,'>!perl -CIO -MHTML::Entities -pe '$_=encode_entities $_'<CR>
nnoremap <silent> <Leader>H :silent %!perl -CI -MHTML::Entities -pe '$_=decode_entities $_'<CR>
vnoremap <silent> <Leader>H :<C-u>silent '<,'>!perl -CI -MHTML::Entities -pe '$_=decode_entities $_'<CR>
前两个地图编码HTML实体,后者解码它们。它们适用于整个文件或一系列标记行。
答案 1 :(得分:1)
这是将非ascii字符转换为HEX值的一种方法:
%s/[^\x00-\x7f]/\=printf('\x%x',char2nr(submatch(0)))/g
以您的行为例,该命令将其更改为:
\xe1h h\xedh\xed
答案 2 :(得分:1)
这里发布的时间太长了 - 基本上是一系列无休止的替换 - 并且可能更聪明,但my very first vimscript function擅长它的作用:用常规字符替换相应的HTML实体。
向下滚动以查找另一个相反的功能。