【发布时间】:2011-01-20 12:46:55
【问题描述】:
我发现自己经常在 vim 中运行两个搜索/替换命令来清理 html 代码,以便我可以在线复制/粘贴它。命令是:
:%s!<!\<!g
:%s!>!\>!g
我想要一种方法,我可以将这两个命令映射到一起运行......我做了一些搜索,以寻找如何在 vimrc 中使用 :map 命令,但是,我看不到如何组合这两行成一个命令,该命令通过单个击键(或单个击键序列)运行。
谢谢!
【问题讨论】:
我发现自己经常在 vim 中运行两个搜索/替换命令来清理 html 代码,以便我可以在线复制/粘贴它。命令是:
:%s!<!\<!g
:%s!>!\>!g
我想要一种方法,我可以将这两个命令映射到一起运行......我做了一些搜索,以寻找如何在 vimrc 中使用 :map 命令,但是,我看不到如何组合这两行成一个命令,该命令通过单个击键(或单个击键序列)运行。
谢谢!
【问题讨论】:
您可以将命令放在以横线分隔的单行中。
:%s!<!\<!g|%s!>!\>!g
但您必须在 map 命令中转义它
:map <F3> :%s!<!\<!g\|:%s!>!\>!g<CR>
【讨论】:
e 标志,如下所示::map <F3> :%s!<!\&lt;!ge\|:%s!>!\&gt;!ge<CR>
将创建一个新缓冲区,其中包含您以前的 HTML 化缓冲区,包括实体转义(以及语法高亮,如果您启用了该功能)。请参阅:h TOhtml 了解更多信息。
【讨论】:
如果您使用此搜索/替换模式对 HTML 实体进行编码,您可能需要查看 unimpaired plugin。除此之外,它还为encoding and decoding XML、URL 和 C 字符串提供了快捷方式。
【讨论】:
:map <F3> :%s!<!\<!<cr>:%s!>!\>!<cr>
当然可以用你想要的任何键替换
【讨论】:
>>> 它只会替换第一个,然后继续下一行。
set gdefault
我没试过,但是你能不能把它们放在同一行,用"<CR>"分隔?
【讨论】: