在每个偶数/奇数行插入编号文本

在每个偶数/奇数行插入编号文本

在 Vim 中我有以下文本:



椅子

桌子

乌干达

我想在每个奇数行添加编号文本,结果如​​下:

>item1
Door
>item2
Chair
>item3
Table
>item4
Uganda

这在 vim 中可以实现吗?

答案1

您可以尝试这个命令,虽然听起来不太直观,但i每次匹配时它都会增加:

:let i = 1 | g/^$/execute "normal i>item" . i | let i = i + 1

答案2

这是一个执行此操作的 vimscript:

:for s:i in range(1, line("$") / 2)
:  execute "normal " . eval(s:i * 2 - 1) . "gg"
:  execute "normal a" . ">item" . s:i
:endfor
  • 循环一半文件中的行(因为我们只想要奇数行)。
  • 使用 移动到适当的行号(项目编号 * 2 - 1 将给出下一个奇数行)gg
  • 附加>itemX到行,其中 X 是产品编号。

您可以直接在 vim 命令行上输入它,也可以将其放在文件中,然后使用 执行它:source <filename>

或者,您可以将其作为函数添加到 .vimrc 中,然后使用它来执行它:call <funcname()>

相关内容