星期一, 一月 27, 2020

VIM学习笔记 网页开发-转义字符实体(Escape Character Entity)

输入字符实体(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/&lt;/</eg'
 execute range . 'sno/&gt;/>/eg'
 execute range . 'sno/&amp;/&/eg'else " must convert & first
 execute range . 'sno/&/&amp;/eg'
 execute range . 'sno/</&lt;/eg'
 execute range . 'sno/>/&gt;/eg'
endif
nohl
let @/ = search
endfunction

映射以下自定义命令

command! -range -nargs=1 HEntities call HtmlEntities(<line1>, <line2>, <args>)

转义(Escape)字符实体

定义以下快捷键,用于将当前行中的特殊字符转义为字符实体代码:

noremap <silent> <Leader>he :HEntities 1<CR>

CharacterEntity_Escape

您也可以在HTML Escape网页上,实现相同的功能。

反转义(Unescape)字符实体

定义以下快捷键,用于将当前行中的字符实体代码反转义为特殊字符:

noremap <silent> <Leader>hu :HEntities 0<CR>

CharacterEntity_Unescape

您也可以在HTML un-escape网页上,实现相同的功能。

以上快捷键和命令,均可在可视化模式和选择模式下使用。例如进入可视化模式或者用鼠标选中多行代码之后,点击<Leader>he快捷键,可以转义已选中的多行文本。

我们也可以在命令中,指定进行转义的文本范围。例如使用以下命令,针对当前行及之后3行进行反转义:

:.,.+3HEntities 0

使用以下命令,则可以针对整个文件进行字符转义:

:%Entities 1

请注意,以上代码只是实现了<>&三个常用字符实体的转义。您可以自行扩展代码,以实现更多字符实体的转义功能。

Ver: 2.0 | YYQ<上一篇 | 目录 下一篇>

没有评论:

发表评论