例如,假设我有以下文本:
/ apple
/ orange
/ banana
/ bread
如何有效地将连续整数添加到列中?
/1 apple
/2 orange
/3 banana
/4 bread
请注意,在实际问题中,列表可能有 20 行、50 行或更多行长。
答案1
一种想法是使用 的vim
宏功能。将光标置于/
中的第一个位置/ apple
,然后执行以下操作:
a1<Esc>
插入第一个数字来开始一切(<Esc>
作为退出键)。然后将光标放在新插入的 上1
,录制宏(到 slot 中q
):
qqyiwj0p<C-a>q
现在您应该对前两行进行了编号。您现在可以运行宏n-2
次数,其中n
是您拥有的总行数。例如,如果您有 50 行,我们会运行宏 48 次,因为我们已经手动填写了 2 行:
48@q
答案2
您可以使用 vim 的“通过外部命令进行管道传输”功能。在 vim 中打开文件,然后执行以下操作:
:%!cat -n | awk '{print $2, $1, $3;}' | sed 's/ //'
您可能可以通过巧妙的 awk 代码省去 sed (它只是删除每行中的第一个空格)。我无法在 30 秒内让它工作,所以我就用 sed 了。