vim - 如何删除 Vim 中的所有其他行?

标签 vim

我想从 Vim 缓冲区中删除每隔一行,从第二行开始,即第 2、4、6 行等。例如,如果缓冲区的内容是:

aaa
bbb
ccc
ddd
eee
fff

然后,在删除所需的行后,它应该变成:

aaa
ccc
eee

哪些 Vim 命令可用于自动执行此操作?

最佳答案

完成任务的一种优雅而有效的方法是调用 :delete 命令(请参阅 :help :d)了解 + 行范围(.+1 的缩写)寻址 当前行之后的行(请参阅 :help {address}),每一行 (请参阅 :help/^)使用 :global 命令(请参阅 :help :g):

:g/^/+d
<小时/>

如果缓冲区中的行数是奇数,则最后一次运行:delete :global 发出的命令会引发错误,因为没有下一行 让它删除,但缓冲区的结果状态仍然是正确的 在这种情况下,因此可以安全地忽略该错误。如果需要的话,错误 可以使用 :silent 命令从一开始就抑制消息:

:sil!g/^/+d

关于vim - 如何删除 Vim 中的所有其他行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1946738/

相关文章:

VIM iTerm SSH : Cant' copy paste

vim - 如何在vim中修改现有的高亮组?

html - 在 vim 中,我可以禁用 <i> 标签中包含的文本的突出显示吗?

vim - 如何使用round.vim单独包围多行

vim - 如何在可视 block 模式下选择整列?

c++ - vundle 不能与 ftplugin 一起正常工作

vim - Macbook Pro 15",退格键不适用于 VIM?

vim - 文件类型特定的行空间设置

vim - VI(VIM): delete/change right to left?

file - 在 Vim 的 C/C++ 代码中打开声明为 #include 的光标下的文件?