繁体   English   中英

在vim中删除行的方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM