用于缩进所选代码的Vim脚本,在选择之前和之后插入代码

时间:2011-12-13 21:20:07

标签: vim

如何编写Vim中的一个动作,它将采用所选行,缩进一次,跳转到开头并插入一些代码,然后跳到最后并插入一些代码?

需要在开头和结尾插入的代码是静态的,不需要更改(至少,不是在此时)。

3 个答案:

答案 0 :(得分:3)

假设开头文字为---,结尾文字为***

:execute "normal gv>i---\<Esc>`>a***" 

如果你想将它录制成一个宏,比如缓冲区“a”,然后从视觉选择开始,请使用:

q a 开始录制到a
&gt; 缩进
i 插入模式
- - - 开始文字
Esc 正常模式
` &gt; 上次视觉选择的结束
a 插入后 * * * 结束文字
Esc 正常模式
q 结束录音

答案 1 :(得分:2)

以下关键顺序步骤应该有效。

  1. 搜索起始行,例如 / MYSEARCH
  2. qa - 开始重新编码a
  3. Vxj 其中x是所需的行数
  4. &gt;&gt; 缩进
  5. ESC
  6. '&lt; 跳转到标记行的开头
  7. 插入您想要的任何内容(例如 O 以在上方开始新行)
  8. ESC
  9. '&gt; 跳转到标记行的末尾
  10. 插入您想要的任何内容(例如 o 以在下方开始新行)
  11. 点击 q 结束录制宏。
  12. 或类似的东西。

    HTH

答案 2 :(得分:0)

这是一个老问题,但我认为无论如何我都会做出贡献。这是你如何采取一个段落并围绕它包装文本。不完全是你要求的,但如果你写一些很小的代码,那么这个更简洁。从段落中的任何位置输入:

&gt; ip (缩进段落)

ki (在第一行之前跳转并打开一个新行)

在此处的段落开头输入您想要的内容

&lt; Esc&gt;} (跳到段落的最后一行)

在段落末尾输入您想要的内容

&LT; CR&GT;&LT; ESC&GT;

这里的警告暗示,这必须是“段落”(没有空行),如果段落后面没有新行,这将无法正常工作。为了适应这种情况,请使用 i 而不是 o ,但在插入的代码的最低位之前,您将是一个空行。如果你想解释这个问题,你需要在vimscript中写一些东西。

以下是我用于设置宏t以执行开始/救援/结束(例如)块的所有笔划:

QT&GT; ipkibegin&LT; ESC&GT;} orescue&LT; CR&GT;端&LT; CR&GT;&LT; ESC&GT; Q

肯定有更好的方法,但这是将它保持在马克级别。