[英]Editing every 3rd line of file in vim
我在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):
所以想得到這種行為w / o 14 |lineNo&
鏈接在一起。 也許帶有行號變量的遞增功能或其他創建行為的代碼。
這是一種可能的方法:
:g/def _fun/normal! opass
def _fun
匹配的每一行上…… pass
。 如果您希望每個存根之間只有一行:
:g/def _fun/normal! opass^OJ^Ox
def _fun
匹配的每一行上…… pass
… <Space>
。 錄制宏
qajopass<Esc>jq
現在,通過運行@a
執行它(下次您可以使用@@
)。
正如@midor所說,它可以與:g
命令一起使用,形式為:
:g/def _fun\d\+/norm @a
在所有匹配的行上執行此宏。
要將縮進的“通過”放在每個函數定義的下方,我將使用:
: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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.