通常我处理看起来像这样的文件:
0.98 3.45
2.45 3.90
.
.
.
4.56 8.45
让我们说 100 行。我想得到这样的东西:
1 0.98 3.45
2 2.45 3.90
.
.
.
100 4.56 8.45
第一列整数。我通常做的是生成一个只有数字 1,2...100 的列文件,然后选择该块并将其粘贴到具有两列的文件中。由于行数几乎总是不同,我的方法似乎很慢。
你有什么建议吗?
谢谢。
:%s/^/\=printf('%-3d ', line('.'))
更多信息:
:help :s\=
:help printf()
:help line()
我发现VisIncr对于类似的操作非常宝贵(这里是使用 Vundle 或 NeoBundle 的人的 GitHub 版本)。该插件“有助于制作增加或减少数字、日期或日期名称的列”。添加行号的示例如下:
在可视块模式下选择文件的第一列:
gg<C-v>G
插入一个起始编号(在这种情况下为 1)和一个列分隔符(我在这里假设 Tab):
I1<Tab><Esc>
重新选择文件的第一列:
gv
运行 VisIncr 命令以增加数字:
:I<CR>
您可以使用不同的命令来右对齐数字:
:II<CR>
递增日期、字母、十六进制和罗马数字同样简单。
:%!cat -n
是一个快速的解决方案。其次是
:%s/^\s*//g
它很快就会给你你想要的东西。
这是另一种仅 vim 的普通模式版本。将光标放在第一列的第一行:
<C-v>GI0 <ESC>gvg<C-a>
<C-v>
视觉块模式 ( :help visual-block
)G
被选择到屏幕底部 ( :help G
)I
在第 1 行开始插入模式 ( :help v_b_I
)0
输入文字零和文字空格<ESC>
回到正常模式gv
重新选择最后一个视觉选择(所有第 1 列)(:help gv
)g<C-a>
依次递增选择中的所有数字 ( :help v_g_CTRL-A
)转这个
0.98 3.45
2.45 3.90
4.56 8.45
进入这个
1 0.98 3.45
2 2.45 3.90
3 4.56 8.45
对于生成一列序列号,nl
是你的朋友。假设您要生成 from 1
to n
:
n
在 vim 中创建一个带有行的文件。
运行:%!nl
。
现在您可以使用<C-v>
选择数字列并将它们复制到其他地方。