2011-06-01 81 views
1

我完全是vim的新手,我知道vim可以做什么神奇的事情。我的要求是在每行的末尾添加一系列数字,我看到有人在我面前做过这些数字。只是因为我没有足够的时间来搜索正确的命令,所以我认为在这里发布一个问题应该是一个更快的方法,因为我没有时间了。对不起,作为一个noob,但似乎这是我能想出的唯一方法。VIM在每行末尾附加一个数字序列

所以样本文件的内容就像是

1  Afghanistan  
2  Albania 
3  Algeria 
4  American   
5  Andorra 
6  Angola 
7  Anguilla   
8  Antarctica 

国家的名单,想象它是一个数据库表,每列与制表符分隔。我已经想出了将标签追加到每行末尾的方法,但现在问题是在每行的末尾添加一个数字,并且每行的编号与其编号完全相同(第一个编号)

我以某种方式认为它应该用视觉模式来完成,但如果你知道的话,请告诉我一个可行的解决方案。任何帮助,高度赞赏。

最好的问候, 骇浪

回答

0

你可以使用录音,这是由Q后面有一个字母,这对于记录书签功能。

例如 在正常模式下转到第一行和类型:

qe 
^ 
y<space> 
$ 
p 
q (to end the recording) 

现在输入@e从字母e或[email protected],其重复@e 20次播放录音。 你可以玩这样的录音。也许还会在正常模式下记录一个j,因此它会将您带到下一行。

+0

很好的建议,但'^ Y^$ P q'没有做OP想要的东西。 – 2011-06-01 09:35:10

+1

@Michael:我编辑了格式化问题 – sehe 2011-06-01 09:36:42

+3

要抽取1个字符,“yl”。为了取消这个数字,'yiw'。 – 2011-06-01 09:39:16

8

在vim中打开文件。如果不是在逃生模式下按ESC。

写入此:%s/$/\=line('.')/

这将在每一行的末尾附加的数字序列。要在开始时添加的数字做

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

+0

+1 Upvote for regex :) – Tudorizer 2011-06-01 09:31:26

+1

这个伎俩。非常感谢,如果你稍微解释一下这个命令,情况会更好。 – bestwc 2011-06-01 09:46:36

+1

这实际上并不复制数字,它只是将vim-buffer的行号附加到行 – sehe 2011-06-01 10:01:56

5

输入:

1  Afghanistan  
2  Albania 
3  Algeria 
4  American   
5  Andorra 
6  Angola 
7  Anguilla   
8  Antarctica 

击键:

:%s!^\(\d\+\).*!&\t\1<CR> 

输出:

1  Afghanistan   1 
2  Albania  2 
3  Algeria  3 
4  American   4 
5  Andorra  5 
6  Angola  6 
7  Anguilla   7 
8  Antarctica 8 

Par :20

说明:

+1

+1。我可以建议使用更简单的'\ t'转义,而不是非友好的'',这对Win32用户来说不起作用吗? – sehe 2011-06-01 10:00:46

+1

谢谢,这也适用。特别感谢你的解释。 – bestwc 2011-06-01 10:04:50

+0

@sehe:谢谢。用你的建议更新了答案(我不是Windows程序员)。 – Johnsyweb 2011-06-01 10:18:56

相关问题