Vim global命令和重复操作

Posted vim教程网

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vim global命令和重复操作相关的知识,希望对你有一定的参考价值。

Vim global命令允许我们在某个指定模式的所有匹配行上运行可执行的 Ex 命令,缩写形式为 :g,其处理重复工作的效率极高。

global 命令的执行原理和执行流程是:global 命令会在指定的 range 范围内,标记所有匹配 pattern 的文本行,并对匹配的行逐行执行 Ex 命令。理解透这句话,可以使用global命令解决大多数问题,推荐阅读Vim处理文本之奇偶行删除。

一、Vim global命令介绍

Vim global命令形式为 :[range]g[lobal][!]/{pattern}/[cmd],用于指示Vim在 [range] 界定范围内对 (不) 匹配模式 {pattern} 的文本行执行 Ex 命令 [cmd]。

range               表示操作范围,Vim :global 命令的默认作用范围是整个文件 (用%表示)

!                       表示反转 :global 命令的行为,将在没有匹配到指定模式的行上执行 [cmd]

pattern          指定 :global 命令要匹配的目标模式,若将该域留空,Vim会自动使用当前(最近一次)的查找模式

cmd                  除 :global 命令之外的任何 Ex 命令,Vim缺省使用 :print 命令 (缩写 :p)

二、Vim global命令使用示例

2.1 删除所有包含模式的文本行

假设有以下一段html代码,每列表项均由主题的标题及其URL两部分数据构成,我们将利用一条 :global 命令分别取出这两组数据。

 
   
   
 
  1. <ol>                                                                    

  2.    <li>

  3.        <a href="/episodes/show-invisibles/" >

  4.            Show invisibles

  5.        </a>

  6.    </li>

  7.    <li>

  8.        <a href="/episodes/tabs-and-spaces/" >

  9.            Tabs and Spaces

  10.        </a>

  11.    </li>

  12.    <li>

  13.        <a href="/episodes/whitespace-preferences-and-filetypes/" >

  14.            Whitespace preferences and filetypes

  15.        </a>

  16.    </li>

  17. </ol>

如果想保留 <a> 标签内的标题内容而把其他行删掉,该怎么做?

首先,使用vim的搜索命令 /\v\<\/?\w+> 先匹配左尖括号 (\<),再匹配可选的正斜杠 (\/?),再匹配一个或多个单词型字符(\w+),最后匹配分隔符 (>),从而匹配到所有html标签。 \v 表示使用正则表达式的 very magic 模式。

然后,在Vim命令行模式下使用global命令 :g//d 删除所有包含html标签的行。由于 :g//d 命令没有指定命令要匹配的目标模式,因此将默认使用上一次用到的搜索目标 /\v\<\/?\w+>

最后,为了删除剩余行所有行首的多余空格,可以使用Vim替换命令 :%s/^*//

上述的Vim教程视频如下图所示。

如果想只包含 URL 的文本行,该如何操作?

在vim命令行模式下使用Vim命令 :v/href/d 可实现只保存包含 URL的所有文本行。

如前面所介绍, :vglobal 或简写的 :v命令用于执行与 :g 命令完全相反的操作, :v/href/d 表示在指定模式 href 的非匹配行上执行 d操作。

同样地,为了删除行首的多余空格,可以用vim替换命令 :%s/^*// 实现。对应vim视频教程如下图所示。

彩蛋:如果想删除vim当前打开文件中的所有空白行,可使用vim命令 :g/^\s*$/d 实现。


以上是关于Vim global命令和重复操作的主要内容,如果未能解决你的问题,请参考以下文章

latex在vim中的代码片段

vim 从嫌弃到依赖(20)——global 命令

Sublime text3最全快捷键清单

7种提高工作效率的Vim操作

7种提高工作效率的Vim操作-Vim使用技巧

Vim的重复操作与高效性