2008-10-31 83 views

回答

102

隨着

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

編輯:總結評論。

該命令可以根據需要調整。


比方說,你想從一個目測可供選擇(V +移動)的行前加數字,要編號開始在42

:'<,'>s/^/\=(line('.')-line("'<")+42)/ 

如果您想要在行和行之間添加一個字符串,只需連接(與VimL中的.)它與數字表達式:

:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/ 

如果您需要此排序爲文本,你可能要填零的結果,可使用printf0001, 0002做...而不是1, 2 ...如:

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

無論如何,如果你想了解更多信息,只需打開vim的幫助::h :s,並按照鏈接(|subreplace-special|,...,|submatch()|

32

cat -n添加行號的輸入。您可以將當前文件傳輸到cat -n,並將當前緩衝區替換爲輸出到stdout的內容。好在這個複雜的解決方案是在vim少於10個字符:

:%!cat -n 

或者,如果你想只是部分選定,直觀地選擇該地區,並輸入:

:!cat -n 

,它會自動把視覺選擇標記中,並且看起來像這樣你輸入之後:

:'<,'>!cat -n 

爲了擦除的行號,我建議使用control-v,這將使你可以直觀地選擇一個矩形,然後你可以用x刪除那個矩形。

+0

如果你想讓行號從0開始而不是1? – Nils 2011-05-11 08:34:16

+0

刪除第一行,爲其餘的編號。之後以首位'0'讀取第一行。 ;) – sjas 2012-07-20 08:13:13

+0

這就是答案! – user3751385 2017-07-28 04:27:15

5

使用類似於UNIX的環境中,你可以使用cat或awk來容易產生行號,因爲Vim與外殼界面友好,所以一切工作的vim,以及它在外殼。
Vim Tip28

:%!cat -n 

:%!awk '{print NR,$0}' 

但是,如果你在MS-DOS使用vim,WIN9X,WIN2000,你虧這些工具包。 這裏只有通過VIM歸檔這是一個非常簡單的方法:

fu! LineIt() 
    exe ":s/^/".line(".")."/" 
endf 

或者,用字母組成的序列是那麼容易,因爲上面:

exe "s/^/".nr2char(line("."))."/" 

您也可以使用SUBST:

:g/^/exe ":s/^/".line(".")."^I/" 

也只能想打印線,而不將其添加到文件:

「有時候可能會很有用,尤其是編輯大型源文件以在紙上打印行號。
要做到這一點,你可以使用選項:set printoptions=number:y激活和:set printoptions=number:n停用此功能。
如果行號應該總是打印,放置線set printoptions=number:yvimrc

+0

在第一個例子中,您是不是指「貓」而不是「呼叫」? – 2011-01-12 19:02:17

19

在一個GNU系統:與外部nl二進制:

:%!nl 
3

"VisIncr"插件適用於插入一般(或字母,日期,羅馬數字等)遞增數字的列。您可以控制數字格式,填充等。因此,在每行的前面插入「1」(通過:s:g或可視塊插入),在可視塊模式下突出顯示該列,然後運行插件中的其中一個命令。

4

首先,你可以,如果你需要刪除現有的行號:

:%s/^[0-9]*// 

然後,您可以添加行號。 NR指的是從當前行號開始,所以你可以做一些數學來獲得你想要的編號。下面的命令給你四位數的行號:

:%!awk '{print 1000+NR*10,$0}'