vim将文本编码为html和hex(对于javascript)

时间:2015-07-31 09:39:53

标签: vim encoding

有没有简单的方法将重音和特殊字符编码为html或hex字符?随着Vim。

原文

  

áhhíhí

到html:

  

& aacute; h h& iacute; h& iacute;

到十六进制:

  

\ xE1h h \ xEDh \ xED

3 个答案:

答案 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实体。

向下滚动以查找另一个相反的功能。