如何在Vim中插入行号后跟空格?

如何在Vim中插入行号后跟空格?,vim,vi,Vim,Vi,我知道命令:%s/^/\=line('.')/将在每行的开头插入行号,如下所示 1 line1 2 line2 3 line3 以前 line1 line2 line3 之后 但是我想在行号后面插入一个空格,如下所示 1 line1 2 line2 3 line3 我试着在命令中的行('.')后加一个空格,但不起作用 :%s/^/\=行('.')/ 编辑:此处提供的问题和答案与的不同。您可以这样做: %s/^/\=printf('%d ', line('.')) 这也意味着您可以填充整数

我知道命令
:%s/^/\=line('.')/
将在每行的开头插入行号,如下所示

1 line1
2 line2
3 line3
以前

line1
line2
line3
之后

但是我想在行号后面插入一个空格,如下所示

1 line1
2 line2
3 line3
我试着在命令中的
行('.')
后加一个空格,但不起作用

:%s/^/\=行('.')/

编辑:此处提供的问题和答案与的不同。您可以这样做:

%s/^/\=printf('%d ', line('.'))
这也意味着您可以填充整数,以便排列:

%s/^/\=printf('%4d ', line('.'))
或者用点或冒号:

%s/^/\=printf('%4d. ', line('.'))
您可以这样做:

%s/^/\=printf('%d ', line('.'))
这也意味着您可以填充整数,以便排列:

%s/^/\=printf('%4d ', line('.'))
或者用点或冒号:

%s/^/\=printf('%4d. ', line('.'))

您可以这样更正您的尝试:
:%s/^/\=行('.')。'/


问题是它正在将您的空间解析为表达式
行('.')
的一部分。但是,当您在表达式中时,可以使用
(点)运算符连接字符串。

您可以这样更正您的尝试:
:%s/^/\=line('.')/


问题是它正在将您的空间解析为表达式
行('.')
的一部分。但是,当你在一个表达式中时,你可以使用
(点)操作符连接字符串。

有没有一种方法可以像ronalch的答案那样排列东西?@SJain:不容易;ronalchn的解决方案在这方面确实更好。有没有一种方法可以像ronalch的答案那样把事情排好呢?@SJain:不容易;ronalchn的解决方案在这方面确实更好。