在输入字符实体(Input Character Entity)章节中,已经介绍了利用HTML-Editor插件来快速输入HTML字符实体。本节将介绍,如何在字符实体和实际文本之间相互转换。
在vimrc配置文件中,定义以下函数:
function! HtmlEntities(line1, line2, action) let search = @/ let range = 'silent ' . a:line1 . ',' . a:line2 if a:action == 0 " must convert & last execute range . 'sno/</</eg' execute range . 'sno/>/>/eg' execute range . 'sno/&/&/eg' else " must convert & first execute range . 'sno/&/&/eg' execute range . 'sno/</</eg' execute range . 'sno/>/>/eg' endif nohl let @/ = search endfunction
映射以下自定义命令:
command! -range -nargs=1 HEntities call HtmlEntities(<line1>, <line2>, <args>)
定义以下快捷键,用于将当前行中的特殊字符转义为字符实体代码:
noremap <silent> <Leader>he :HEntities 1<CR>
您也可以在HTML Escape网页上,实现相同的功能。
定义以下快捷键,用于将当前行中的字符实体代码反转义为特殊字符:
noremap <silent> <Leader>hu :HEntities 0<CR>
您也可以在HTML un-escape网页上,实现相同的功能。
以上快捷键和命令,均可在可视化模式和选择模式下使用。例如进入可视化模式或者用鼠标选中多行代码之后,点击<Leader>he快捷键,可以转义已选中的多行文本。
我们也可以在命令中,指定进行转义的文本范围。例如使用以下命令,针对当前行及之后3行进行反转义:
:.,.+3HEntities 0
使用以下命令,则可以针对整个文件进行字符转义:
:%Entities 1
请注意,以上代码只是实现了<
、>
和&
三个常用字符实体的转义。您可以自行扩展代码,以实现更多字符实体的转义功能。