Vim高階替換一則 行號獲取

2021-06-19 09:31:45 字數 1025 閱讀 6067

vi/vim使用技巧: 替換的巧妙使用(1)

;2、vi/vim使用技巧: 替換的巧妙使用(2)

」。最後效果:

...原始文字:

在正常模式下輸入:y481p,這樣就得到了如下內容:

...總共是482行。按「:」進入命令模式,輸入:%s/-\zs\([0-9]\)\ze/\=line(".")  ,回車得到最終效果。命令解釋:

%s 正則替換

\zs 匹配任何位置,並將匹配起始處置於該處: 下乙個字元將是整個匹配的第乙個字元。「:help \zs」

\ze 匹配任何位置,並將匹配結尾處置於該處: 前乙個字元將是整個匹配的最後乙個字元。「:help \ze」

line(".") 游標所在的行號「:help line」

\= 執行後面的表示式「:help :\=」現在深入學習替換功能。比如在最終的效果前加入乙個行號,如:

1 2

3 ...480

481

482 最開始俺使用了如下的命令實現:

:%s/^/\=line('.').' '然後又想到了 let 函式:

:let n=1 | g/http/s/^/\=n.' '/ | let n+=1google了一下發現另外幾種方法「

鏈結:inserting line number into file」:

1 :g/^/exec "s/^/".strpart(line(".")." ", 0, 4)

2 :%s/^/\=strpart(line(".")." ", 0, 5)1的命令解釋「

鏈結」:

line(".")." " number of the current line plus four spaces

strpart("123 ", 0, 4) first four characters ("123 ")

"s/^/123 " substitute the beginning of the line with "123 "這裡俺有乙個地方不是很理解,即 "s/^/". —— 誰給解釋解釋?

from:

Excel 應用一則

那就開始做事吧 是想讓它完成這樣乙個功能 計算兩個日期之差.我一開始就在想是不是應該用它提供的函式來解決呢 後來發現沒有提供這個函式.並且這時我連怎麼取函式的引數位置都不清楚,慢慢來,看下別人做的.我先試了一下now 函式,哈哈.成功.太爽了,接下來就是找函式 發現這個函式 datedif star...

seq妙用一則

haoren im sj01 server01 gongsi seq f 201110 02g 1 26 20111001 20111002 20111003 20111004 20111005 20111006 20111007 20111008 20111009 20111010 2011101...

JPQL CASE WHEN 寫法一則

其實也沒什麼特別的,就是jpa2中,jpql的解析還是有硬傷啊,害得我摸索了好一陣子。請看 public static final string hql find transaction amount select new foo.bar.service.report.tax.transaction...