【问题标题】:VIM: how to add search/replace command to vimrc and map to a shortcutVIM:如何将搜索/替换命令添加到 vimrc 并映射到快捷方式
【发布时间】:2011-01-20 12:46:55
【问题描述】:

我发现自己经常在 vim 中运行两个搜索/替换命令来清理 html 代码,以便我可以在线复制/粘贴它。命令是:

:%s!<!\&lt;!g
:%s!>!\&gt;!g

我想要一种方法,我可以将这两个命令映射到一起运行......我做了一些搜索,以寻找如何在 vimrc 中使用 :map 命令,但是,我看不到如何组合这两行成一个命令,该命令通过单个击键(或单个击键序列)运行。

谢谢!

【问题讨论】:

    标签: search map replace vim


    【解决方案1】:

    您可以将命令放在以横线分隔的单行中。

    :%s!<!\&lt;!g|%s!>!\&gt;!g
    

    但您必须在 map 命令中转义它

    :map <F3> :%s!<!\&lt;!g\|:%s!>!\&gt;!g<CR>
    

    【讨论】:

    • 这几乎是对的。在 Vim 中,如果第一个命令出错(如果第一个命令找不到匹配项,则会发生这种情况),则不会执行第二个命令。要抑制此行为,请添加 e 标志,如下所示::map &lt;F3&gt; :%s!&lt;!\&amp;lt;!ge\|:%s!&gt;!\&amp;gt;!ge&lt;CR&gt;
    【解决方案2】:
    :TOhtml

    将创建一个新缓冲区,其中包含您以前的 HTML 化缓冲区,包括实体转义(以及语法高亮,如果您启用了该功能)。请参阅:h TOhtml 了解更多信息。

    【讨论】:

      【解决方案3】:

      如果您使用此搜索/替换模式对 HTML 实体进行编码,您可能需要查看 unimpaired plugin。除此之外,它还为encoding and decoding XML、URL 和 C 字符串提供了快捷方式。

      【讨论】:

        【解决方案4】:
        :map <F3> :%s!<!\&lt;!<cr>:%s!>!\&gt;!<cr>    
        

        当然可以用你想要的任何键替换

        【讨论】:

        • 如果我连续有一对,这不起作用......例如:&gt;&gt;&gt; 它只会替换第一个,然后继续下一行。
        • 那只是因为缺少'g'修饰符。
        • 啊抱歉,我已经习惯了在我的 .vimrc 中有set gdefault
        【解决方案5】:

        我没试过,但是你能不能把它们放在同一行,用"&lt;CR&gt;"分隔?

        【讨论】:

          猜你喜欢
          • 2022-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-26
          • 2019-07-14
          • 2016-01-08
          相关资源
          最近更新 更多