2011-06-01 89 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

相關問題