通常我处理的文件如下所示:
0.98 3.45 2.45 3.90 . . . 4.56 8.45
字符串比如说100行。我想得到这样的东西:第一列是整数。我通常做的是生成一个只包含数字1、2...... 100的列文件,然后选择该块并将其粘贴到包含两列的文件中。由于行数几乎总是不同的,因此我的方法似乎非常慢。你有什么建议吗?谢谢.
hc2pp10m1#
:%s/^/\=printf('%-3d ', line('.'))
字符串详细信息请参阅:
:help :s\= :help printf() :help line()
型
kcugc4gi2#
下面是一个仅支持vim的普通模式版本。将光标放在第一列第一行:
<C-v>GI0 <ESC>gvg<C-a>
字符串
<C-v>
:help visual-block
G
:help G
I
:help v_b_I
0
<ESC>
gv
:help gv
g<C-a>
:help v_g_CTRL-A
把这个
0.98 3.45 2.45 3.90 4.56 8.45
型到这个
5sxhfpxr3#
我发现VisIncr对于类似的操作是非常宝贵的(这里的the GitHub version是为那些使用Vundle或NeoBundle的人准备的)。该插件“便于制作一列递增或递减的数字,日期或日期名称”。下面是添加行号的示例:在视觉块模式下选择文件的第一列:
gg<C-v>G
字符串插入一个起始数字(本例中为1)和一个列分隔符(我假设这里是Tab):
I1<Tab><Esc>
型重新选择文件的第一列:
型运行VisIncr命令以增加数字:
:I<CR>
型您可以使用不同的命令来右对齐数字:
:II<CR>
型递增日期、字母、十六进制和罗马数字也同样简单。
yyhrrdl84#
:%!cat -n
字符串是一个快速的解决方案。
:%s/^\s*//g
型它能很快满足你的需求
wwtsj6pe5#
要生成一列序列号,nl是您的朋友。假设您要生成从1到n的列:1.在Vim中创建包含n行的文件。1.运行:%!nl。现在,您可以使用<C-v>来选择数字列,并将它们复制到其他位置。
nl
1
n
:%!nl
iszxjhcz6#
1.输入数字1,然后复制100次,例如
y + 100
字符串1.进入视觉块并选择从第二行开始的所有数字1.最后按
g + <C-a>
6条答案
按热度按时间hc2pp10m1#
字符串
详细信息请参阅:
型
kcugc4gi2#
下面是一个仅支持vim的普通模式版本。将光标放在第一列第一行:
字符串
<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
)把这个
型
到这个
5sxhfpxr3#
我发现VisIncr对于类似的操作是非常宝贵的(这里的the GitHub version是为那些使用Vundle或NeoBundle的人准备的)。该插件“便于制作一列递增或递减的数字,日期或日期名称”。下面是添加行号的示例:
在视觉块模式下选择文件的第一列:
字符串
插入一个起始数字(本例中为1)和一个列分隔符(我假设这里是Tab):
型
重新选择文件的第一列:
型
运行VisIncr命令以增加数字:
型
您可以使用不同的命令来右对齐数字:
型
递增日期、字母、十六进制和罗马数字也同样简单。
yyhrrdl84#
字符串
是一个快速的解决方案。
型
它能很快满足你的需求
wwtsj6pe5#
要生成一列序列号,
nl
是您的朋友。假设您要生成从1
到n
的列:1.在Vim中创建包含
n
行的文件。1.运行
:%!nl
。现在,您可以使用
<C-v>
来选择数字列,并将它们复制到其他位置。iszxjhcz6#
1.输入数字1,然后复制100次,例如
字符串
1.进入视觉块并选择从第二行开始的所有数字
1.最后按
型