你在Vim中使用过的最喜欢/最有成效的宏是什么?

我想知道vim专家如何在vim中使用宏进行日常编码 - 我有很多经常使用的自定义快捷键/映射,但没有遇到任何宏的好主意。

它可能是你以前使用过的宏,为了简化任务,我只需要想法就如何在vim中有效地使用这个特性。


宏通常是一个“即时”自动化工具。 可以说你有一个项目清单:

apple
orange
banana
grapes
cantaloupe

例如,您可以快速编写一个宏,使其成为一个HTML列表。 从苹果开头开始,将以下宏记录到寄存器1中: i<li><Esc>A</li><Esc><CR>

<CR>是关键,因为它允许您跳转到下一行,从而在您的宏执行中使用“count”修饰符,从而提供多行宏执行

然后转到橙色的开头,并使用4 @ 1([count] @ [register letter])将宏应用于剩下的条目以获取此:

<li>apple</li>
<li>orange</li>
<li>banana</li>
<li>grapes</li>
<li>cantaloupe</li> 

想象一下,在200件物品的列表上使用它。 节省时间不?

当然这个例子是微不足道的,你可以用搜索和替换来做到这一点,但你可以想象更复杂的例子......


我使用宏进行了大量临时自定义按键保存。 但这是根据具体情况而定的。

例如:删除4个字符,插入模式,([]),退出插入模式,向下移动,退回四个空格。 然后使用. 重复它。


我最近在编辑c ++代码时使用了一个宏。 我有大约300个头文件,他们基本上有这样的形式:

... includes and other junk
namespace foo {
   namespace bar {
      ... some classes and other code ...
   }
}
... possibly more code

我想添加另一个名称空间来包含另外两个名称空间。 最终的文件应该如下所示:

... includes and other junk
namespace top {
   namespace foo {
      namespace bar {
         ... some classes and other code ...
      }
   }
}
... possibly more code

非常单调乏味,而且很容易出错。 但是使用vim宏很简单。 只需打开所有需要更改的文件,然后记录:

  • 搜索“namespace foo”
  • 在“namespace top {”之上插入一行
  • 回到“命名空间富”行
  • 点击'%'查找右大括号
  • 追加行后面的'}'
  • 使用= a}重新格式化代码块
  • 转到下一个文件:wn
  • 然后,您可以多次运行宏,因为有文件需要更改。

    就我个人而言,我总是使用录制的宏和视觉块编辑命令来加快速度。 起初他们可能有点棘手,将问题看作是一个可以轻松使用vim命令轻松移动的范围内的重复命令。 但是,一旦你养成了在那个庄园里看到问题的习惯,他们总是有机会为你节省时间。

    链接地址: http://www.djcxy.com/p/8695.html

    上一篇: What is your favorite/most productive macro that you have used in Vim?

    下一篇: What is your favorite way to comment several lines in Vim?