为了账号安全,请及时绑定邮箱和手机立即绑定

在vim中编辑文件的每第三行

在vim中编辑文件的每第三行

holdtom 2021-06-07 05:09:14
我在 vim 中为 python 项目制作了一个模板化的方法列表。我在每个方法之间添加了几行pass,现在想为每个方法添加一个- 在我实现该方法之前,这仍然是可解释的 python 代码。在 vim 中,我知道如何使用编辑空间上连续的文件行,:10,17s/<search regex>/<substitute>/但是在进行编辑以在方法之间添加空行之后,我需要pass每 3 行插入一个。我发现这样做的方法是使用管道和&通过: :10s/<search regex>/<substitute>|13&|16&等。我可能将 15 个 & 符号链接在一起以使其工作。有没有更简洁的方法可以在 vim 中获得这种行为?为了解决评论,这里是一个最小的例子,在文件 myfile.py 中我有:def _fun1(self):def _fun2(self):def _fun3(self):def _fun4(self):...etc在第 2 行、第 5 行、第 8 行,等等。我想插入pass(之前有 4 个空格以保持一致的间距),/我有这个,_fun15(self):所以想要得到没有 14 |lineNo&s 链接的行为一起。也许是带有行号变量的递增功能或创建行为的其他一些代码。
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

录制宏

qajopass<Esc>jq

现在通过运行来执行它@a(下次您可以使用@@)。


正如@midor 所说,它可以与以下:g形式的命令一起使用:

:g/def _fun\d\+/norm @a

在所有匹配的行上执行这个宏。


查看完整回答
反对 回复 2021-06-09
?
互换的青春

TA贡献1797条经验 获得超6个赞

要在每个函数定义下方放置带有缩进的“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


查看完整回答
反对 回复 2021-06-09
  • 3 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信