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