我在vim中为Python项目制作了方法的模板清单。我在每个方法之间添加了行,并希望现在为每个方法添加pass
,直到实现该方法为止,这仍然是可解释的python代码。在vim中,我知道如何使用:10,17s/<search regex>/<substitute>/
编辑文件的空间连续行,但是在进行编辑以在方法之间添加空行之后,我需要在每第三行插入pass
。我发现这样做的方法是通过以下方式使用管道和&
:
:10s/<search regex>/<substitute>|13&|16&
等。我可能将15个与号链接在一起以使其正常工作。有没有更简洁的方法来在Vim中获得这种行为?
为了发表评论,这里是一个最小的示例,我在文件myfile.py中拥有:
def _fun1(self):
def _fun2(self):
def _fun3(self):
def _fun4(self):
...etc
在第二行,第五行,第八行等上。我想插入pass
(在保持一致间距之前w / 4个空格),/ i最多可以插入_fun15(self):
因此希望将不带14个|lineNo&
的行为链接在一起。也许带有行号变量的递增功能或其他创建行为的代码。
答案 0 :(得分:3)
这是一种可能的方法:
:g/def _fun/normal! opass
def _fun
相匹配的每一行上……pass
。如果您希望每个存根之间只有一行:
:g/def _fun/normal! opass^OJ^Ox
def _fun
相匹配的每一行上……pass
…<Space>
。答案 1 :(得分:2)
记录宏
qajopass<Esc>jq
现在通过运行@a
来执行它(下次您可以使用@@
)。
如@midor所说,它可以与:g
命令一起使用,其形式为:
:g/def _fun\d\+/norm @a
要在所有匹配的行上执行此宏。
答案 2 :(得分:0)
要将缩进的“ pass”放在每个函数定义的下方,我将使用:
:g/^def/put =' pass'
^ ........... begining of each line
put ......... puts contents bellow
要挤压空白行:
:g/^$/,/./-1j
a global command the gets from each empty line ^$
until next non-empty line minus one, performs a join command