vim将文本编码为html和十六进制(用于javascript)

vim将文本编码为html和十六进制(用于javascript),vim,encoding,Vim,Encoding,有没有简单的方法将重音和特殊字符编码为html或十六进制字符?有活力 原文 áh híhí 要使用html,请执行以下操作: &aa可爱;hí;hí 到十六进制: \xE1h h\xEDh\xED 以下是将这些非ascii字符转换为十六进制值的一种方法: %s/[^\x00-\x7f]/\=printf('\x%x',char2nr(submatch(0)))/g 以您的行为例,该命令将其更改为: \xe1h h\xedh\xed 在这里发布太长了——本质上是一系列无

有没有简单的方法将重音和特殊字符编码为html或十六进制字符?有活力

原文

áh híhí

要使用html,请执行以下操作:

&aa可爱;hí;hí

到十六进制:

\xE1h h\xEDh\xED


以下是将这些非ascii字符转换为十六进制值的一种方法:

%s/[^\x00-\x7f]/\=printf('\x%x',char2nr(submatch(0)))/g
以您的行为例,该命令将其更改为:

\xe1h h\xedh\xed

在这里发布太长了——本质上是一系列无休止的替换——可能会更聪明,但擅长于它的功能:用相应的HTML实体替换常规字符


向下滚动可获得另一个相反的函数。

对于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>
nnoremap h:silent%!perl-CIO-MHTML::Entities-pe'$\=encode\u Entities$\'
vnoremaph:silent'