VIM在每行的末尾附加一个数字序列

bes*_*twc 2 vim append

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

所以示例文件内容就像

1       Afghanistan     
2       Albania 
3       Algeria 
4       American        
5       Andorra 
6       Angola  
7       Anguilla        
8       Antarctica
Run Code Online (Sandbox Code Playgroud)

国家列表,假设它是一个数据库表,每个列都用制表符分隔.我已经想出了一种方法将tab附加到每一行的末尾,但现在问题是在每行的末尾添加一个数字,每行的数字与其id完全相同(第一个数字) )

我不知何故认为它应该用视觉模式完成,但如果你知道,请告诉我一个有效的解决方案.任何帮助都非常感谢.

最诚挚的问候,海浪

May*_*ank 9

在vim中打开您的文件.如果不处于退出模式,请按ESC.

写这个 :%s/$/\=line('.')/

这将在每行的末尾附加数字序列.在开头添加数字

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

  • `:%s/a/b` <=表示在每一行用b替换模式a.%是指定每行.`:%s/a/b/g` <=每个地方的每个地方都有一个替换为b的地方.现在在`:%s/$ /\= line('.')/`_a_是_ $ _和_b_是_ = line('.')_.$表示行尾,^表示行开头.它们不是该行的开始和结束字符.它们实际上只是在开始角色之前和刚刚在最后一个角色之前(在换行之前) (2认同)

Joh*_*web 5

输入:

1       Afghanistan     
2       Albania 
3       Algeria 
4       American        
5       Andorra 
6       Angola  
7       Anguilla        
8       Antarctica
Run Code Online (Sandbox Code Playgroud)

快捷键:

:%s!^\(\d\+\).*!&\t\1<CR>
Run Code Online (Sandbox Code Playgroud)

输出:

1       Afghanistan         1
2       Albania     2
3       Algeria     3
4       American            4
5       Andorra     5
6       Angola      6
7       Anguilla            7
8       Antarctica  8
Run Code Online (Sandbox Code Playgroud)

标准杆:20

说明: