5

Я хотел бы передать имя файла и номер текущей строки, где находится мой курсор, через двоеточие, внешнему сценарию оболочки. Например, если я редактирую файл "foo.c", и в настоящее время я нахожусь на строке 77, я бы хотел вызвать свой скрипт из vim с аргументом "foo.c:77".

2 ответа2

5

Альтернатива ответу Каралоса:

:call system('echo ' . expand('%') . ':' . line('.'))

Конечно, вы заменяете "echo" на имя вашего сценария оболочки.

Преимущество system() состоит в том, что он возвращает вывод команды run, поэтому вы можете записать его для дальнейшего использования в скрипте Vim, если вам это нужно.

Вам может понадобиться взглянуть на модификаторы в :help expand() если вам нужно каким-либо образом уточнять / изменять имя файла.

1

Хотя это довольно громоздко, вы можете попробовать следующее

:!echo %:<Ctrl+R>=line(".")<CR><CR>

или вы могли бы использовать промежуточную переменную

:let l=line(".")

и позвонить

:!echo %:<Ctrl+R>=l<CR><CR>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .