舉例,如下文本中有個DSC開頭的以數字命名的jpg文件,我想修改文件名爲在原來的基礎上加上32,好比第一行中的字符改成:DSC00099.JPG
在vim中輸入:
:%s/DSC[0]\+\(\d\+\)/\=printf("DSC%05d",submatch(1)+32)/
詳解:vim
\(\)之間的內容是與submatch(1)中對應的內容,也就是說,submatch(1)表明了\(\)中間的內容,這裏是匹配的數字。函數
printf()函數與c語言中的同樣,「」中的內容就是格式化輸入的內容spa
\d 表示匹配數字code
\+ 表示匹配1次或者屢次blog
[0] 表示匹配數字0it
\= 表示後面的內容是個表達式class
:%s/find/replace/ 表示查找find後用replace替換基礎
若是輸入中沒有:[0]\+,那麼\(\)會匹配DSC後面的00067,vim會認爲00067是個8進制數(十進制是:55)。im
補充幾個快捷鍵:命名
cc:刪除當前行並在合適的位置開始輸入,等價於ddo
在插入模式下,<C-R>而後按=號能夠調用簡單的計算器
:g/^$/d 刪除空白行
1 DSC00067.JPG 2 stuos/j;itpoismlojmhl;lj/DSC00066.JPG 3 /kjoiuo/poi\joij/DSC00068.JPG 4 DSC00069.JPG 5 DSC00070.JPG 6 /kjoiuo/poi\joij/DSC00071.JPG 7 /kjoiuo/poi\joij/DSC00072.JPG
這個問題困擾我了一下子,仍是我老婆給了我思路,謝謝老婆。