2012-06-06 3 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. @ - просто разделитель. Обычно эту функцию записывают как ': s ///', но ': s ###' работает так же, как и ': s @@@' ... – Amadan

Смежные вопросы