我需要删除vim中的几行(第42行,第424行和第4242行)。我找到了两种可能的解决方案:
将光标移动到该行的开头,然后按“dd”或
输入':42d'等......
然而,要完成任务,我必须删除所有3行。我应该这样做吗?
:42d
:423d
:4240d
还是这个?
:4242d
:424d
:42d
一旦我这样做,我需要用另一个单词替换第42个单词(用“Vader(父亲形象)”替换“Vader”)。我通过键入42 / Vader来查找“Vader”,然后进入“INSERT”模式并替换了该单词。我在这里遇到的问题是检查器告诉我原始文件不包含正确的信息。我认为线删除存在问题。或者我没有用“Vader(父亲形象)”取代“Vader”?
答案 0 :(得分:2)
如果你真的从行号开始,我会从头到尾删除,以避免偏移计算。您可以在一个命令行中连接所有:delete
命令:
:4242d|424d|42d
顺便说一句,你不需要Vim;脚本化解决方案可以使用sed -i -e 4242d -e 424d -e 42d
等
dd
(删除当前行),n
(转到下一个匹配),.
(重复)。
答案 1 :(得分:1)
第一项任务可以通过以下方式完成:
:4242dd|424d|42d<CR>
或:
4242Gdd424G.42G.
请注意相反的顺序,这是维护整个任务中行号的必要条件。
gg42/Vader<CR>
是一种更安全的搜索Vader
第42次的方法,因为它从缓冲区的顶部开始。
光标位于右侧Vader
后,您可以执行以下操作:
cgnVader(father figure)<Esc>
替换它。
您可以使用未命名的寄存器来避免重新输入Vader
:
cgn<C-r>"(father figure)<Esc>
但最好让你的搜索落在比赛的最后一个角色:
/Vader/e<CR>
a(father figure)<Esc>