[英]Ways to delete a line in vim
我需要删除vim中的几行(42行,424行和4242行)。 我发现了2种可能的解决方案:
将光标移到该行的开头,然后按“ dd”或
输入':42d'等...
但是,要完成任务,我必须删除所有3行。 我应该做这样的事情吗? :42d
:423d
:4240d
或这个?
:4242d
:424d
:42d
完成此操作后,我需要将另一个单词的第42次出现替换为另一个单词(将“ Vader”替换为“ Vader(父亲形象)”)。 我通过键入42 / Vader查找“ Vader”,然后进入“插入”模式并替换了单词。 我在这里遇到的问题是检查程序告诉我原始文件不包含正确的信息。 我认为行删除存在问题。 还是我无法将“ Vader”替换为“ Vader(父亲形象)”?
如果您确实以行号开头,那么我会从头到尾删除,以避免偏移量计算。 您可以在单个命令行中连接所有:delete
命令:
:4242d|424d|42d
顺便说一句,您不需要Vim。 可以使用sed -i -e 4242d -e 424d -e 42d
类的Unix工具来完成脚本化解决方案。
但是更常见的是,您不是从行号开始,而是导航到行,例如通过搜索。 然后,通常的顺序dd
(删除当前行), n
(进入下一场比赛), .
(重复)。
第一项任务可以通过以下方式完成:
: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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.