![在每个偶数/奇数行插入编号文本](https://linux22.com/image/1410731/%E5%9C%A8%E6%AF%8F%E4%B8%AA%E5%81%B6%E6%95%B0%2F%E5%A5%87%E6%95%B0%E8%A1%8C%E6%8F%92%E5%85%A5%E7%BC%96%E5%8F%B7%E6%96%87%E6%9C%AC.png)
在 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()>
。