如何编写Vim中的一个动作,它将采用所选行,缩进一次,跳转到开头并插入一些代码,然后跳到最后并插入一些代码?
需要在开头和结尾插入的代码是静态的,不需要更改(至少,不是在此时)。
答案 0 :(得分:3)
假设开头文字为---
,结尾文字为***
:execute "normal gv>i---\<Esc>`>a***"
如果你想将它录制成一个宏,比如缓冲区“a”,然后从视觉选择开始,请使用:
q a 开始录制到a
&gt; 缩进
i 插入模式
- - - 开始文字
Esc 正常模式
` &gt; 上次视觉选择的结束
a 插入后
* * * 结束文字
Esc 正常模式
q 结束录音
答案 1 :(得分:2)
以下关键顺序步骤应该有效。
a
宏x
是所需的行数或类似的东西。
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
肯定有更好的方法,但这是将它保持在马克级别。