vim - 如何每隔一行删除,并在选择后粘贴删除的结果?

标签 vim

这是对 question about deleting every second line in a file 的后续.

如何在 Vim 中实现:

之前:

aaa
bbb
ccc
ddd
eee
fff

(比如说,它是视觉选择的一部分。)

之后:

aaa
ccc
eee
bbb
ddd
fff

我怎样才能做到这种宏风格(删除每隔一行但存储 已删除的行进行缓冲,以便按顺序粘贴已删除的行)?

此外,如果您可以在视觉选择中做到这一点,那将是真正的 handy(解析某个文件)!

最佳答案

1. 当要重新排序的行是唯一出现在 缓冲区,可以使用命令

:g/^/+m$

2. 一般来说,当这些行被其他文本包围时, 可以选择要重新排序的目标行范围,然后运行

:exe"'<,'>g/^/+m"line("'>")

或选择除第一行以外的所有行进行重新排序 然后运行

:'<,'>-g/^/+m'<-

相反。 在任何一种情况下,重新排序都是在一次运行中高效完成的。

关于vim - 如何每隔一行删除,并在选择后粘贴删除的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11355690/

相关文章:

vim - 是否可以修改vim中一种情况的事故规则?

linux - Vim 保存文件时的行为有所不同

vim - vim 中的隐藏功能仍然让我移动所有字符

vim:使用类似插入模式的完成来完成命令

python - Jedi 没有找到项目中的所有用法

vim - 打开新文件后关闭 netrw 资源管理器

environment-variables - 如何从gvim中获取环境变量

vim - VSCode Ctrl+D 的最佳 Vim 替代品

bash - 在 vim 命令行模式下 : how to kill the line from the current cursor position to the end

Vim:命令行选择