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

时间:2009-12-12 01:48:55

标签: vim macros keyboard-shortcuts

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

它可能是您之前使用的宏,非常简化任务 - 我只需要了解如何在vim中有效地使用此功能!

5 个答案:

答案 0 :(得分:4)

宏通常是“即时”自动化工具。假设您有一个项目列表:

apple
orange
banana
grapes
cantaloupe

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

&lt; CR&gt;是关键,因为它允许你跳转到下一行,从而在宏执行上使用“count”修饰符,提供多行宏执行

然后转到橙色的开头并使用4 @ 1([count] @ [register letter])将宏应用于其余条目以获得此结果:

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

想象一下,在200个项目的列表中使用它。节省时间没有?

当然这个例子很简单,你可以通过搜索和替换来做到这一点,但你可以想象更复杂的例子......

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

我最近在编辑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宏它非常简单。只需打开所有需要更改的文件然后记录:

  1. 搜索“namespace foo”
  2. 在“namespace top {”
  3. 上方插入一行
  4. 返回“namespace foo”行
  5. 点击'%'查找结束括号
  6. 在其后面添加“}”行
  7. 使用= a}
  8. 重新格式化代码块
  9. 使用以下命令转到下一个文件:wn
  10. 然后您可以像要更改的文件一样多次运行宏。

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

答案 3 :(得分:1)

正如gahooa已经说过的那样,Macros更像是一个解决临时问题的快速解决方案。对于更永久的方法,可以定义映射或函数来做......需要做什么。

答案 4 :(得分:0)

我喜欢用ctags和/或cscope标记我的文件,因此我有一个用于重新索引已更改文件的键映射。

例如,您正在项目栏中编辑foo.c并进行了一些更改。按(魔术击键)和vim运行ctags -a -o foo.c

如果你想变得非常喜欢,你可以为每个项目提供一个单独的TAGS文件,并添加一个键映射来重新索引整个项目。

ctags rocks