2012-06-06 44 views
3

我想插入文件名和行號到文件中的某些地方。例如,這行:如何用Vim中的函數結果替換字符串?

_debug('init'); 

我想更換

:s/debug('/debug('(%current_filename_here%:%current_line_number_here%)\ /g 

得到這個

_debug('(filename.ext:88) init'); 

我嘗試使用擴張('%:t')來獲取文件名和行(".")至獲取行號,但我不知道如何使用它來替換表達式。

我該怎麼做?

回答

8

您可以使用\=。例如:

:[email protected]_debug('\[email protected]\=printf('(%s:%d) ', expand('%:t'), line('.'))@ 

當{替換}與"\="開始它被評價爲一種表達,

+0

什麼手段@在這種情況下? – Neka

+0

我不能直接在表達式中使用Vim函數,只能通過printf對吧? – Neka

+0

您可以使用vim功能。 @只是一個分隔符。這是習慣寫功能':■///''不過:■###'工程,以及,一樣':■@@@'... – Amadan