Как написать функцию или макрос для отправки параметра на системный вызов в gVim для Windows? - PullRequest
1 голос
/ 29 января 2010

Полезная команда

:r!date

не так полезен в gVim для Windows (не в ggim Cygwin), потому что в Windows есть своя собственная функция даты, которая не делает то, что я хочу.

итак, что-то вроде

:r!c:\cygwin\bin\date

было бы здорово. Но это много, чтобы напечатать. И, учитывая, что я мог бы захотеть вызвать несколько вещей таким образом, было бы неплохо написать функцию, в которой я мог бы передать аргумент foo, и он запустил бы

:r!c:\cygwin\bin\foo

Какой лучший способ сделать это? Так должно быть 1) Постоянный (хранится в vimrc или в каком-либо файле запуска) 2) Выполнено с минимальным количеством нажатий клавиш. Любые предложения для хороших мест для создания отображений приветствуются.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 января 2010

Я думаю, более простое решение для повседневного использования (особенно если вы заинтересованы только в одной из многих системных команд) будет создавать пользовательский синоним-команда.

:command! -nargs=1 -range=% RR <line1>,<line2>read! c:\cygwin\bin\<args>

Это говорит Vim создать новую команду с именем RR, которая принимает диапазон и одну (обязательный) аргумент. Команда просто передает аргументы в read! preeding c:\cygwin\bin\ к аргументу.

Вы можете даже предоставить завершение файла для файлов в c:\cygwin\bin\ каталог. Все, что вам нужно, это создать функцию полного списка следующим образом:

function! RRComplete(A, L, P)
    return system('dir /b /l c:\cygwin\bin')
endfunction

и затем укажите имя этой функции при создании команды:

:command! -nargs=1 -complete=custom,RRComplete -range=% RR <line1>,<line2>read! c:\cygwin\bin\<args>
1 голос
/ 30 января 2010

:h strftime()?

В противном случае, давным-давно я написал system () wrappers для выполнения внешних программ из vim либо на * nix, либо на win32-gvim с помощью cygwin's bash или $ COMSPEC как & shell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...