Как использовать cyg-обертку для раскрутки новой вкладки в win32 gvim

Я хотел бы настроить псевдоним в моем cygwin .bashrc, который переводит имена путей unix-to-dos и передает их в windows gvim на новой вкладке существующего экземпляра. Я пытаюсь использовать скрипт cyg-wrapper от Luc Hermitte для запуска нативных приложений win32 из Cygwin согласно этому совету vim. Пример использования Люком своего сценария:

alias vi= 'cyg-wrapper.sh "C:/Progra~1/Edition/vim/vim63/gvim.exe"
    --binary-opt=-c,--cmd,-T,-t,--servername,--remote-send,--remote-expr'

Я не понимаю этот пример, потому что большинство этих параметров vim (-c,- cmd, - servername, - remote-send, -remote-expr и т. Д.) Требуют дополнительной информации, и я не нашел ни одного примера как предоставить дополнительную информацию в cyg-wrapper.sh. Например, позвонив

C:/Progra~1/Edition/vim/vim63/gvim.exe --servername=GVIM 
   --remote-tab-silent file1 &

откроет file1 в новой вкладке существующего (или несуществующего) экземпляра GVIM, но вызов gvim --servername ничего не добивается самостоятельно. К сожалению, соответствующая фраза cyg-wrapper не работает:

cyg-wrapper.sh "C:/Progra~1/Edition/vim/vim63/gvim.exe"
    --binary-opt=--servername=GVIM,--remote-tab-silent --fork=2 file1

Если запустить дважды, это фактически откроет два экземпляра gvim; как будто имя сервера 'GVIM' удаляется и игнорируется. Как вы предоставляете имя сервера для gvim --servername или.vimrc для gvim -u используя cyg-wrapper.sh?

Кроме того, почему программы должны передаваться в cyg-wrapper.sh в относительно неясной "смешанной форме"? Например, если я попробую

cyg-wrapper.sh "/cygdrive/c/path/to/GVimPortable.exe"
        --binary-opt=--servername=GVIM,--remote-tab-silent --fork=2

Я получаю "Неверный переключатель - "/cygdrive"."

Смотрите также:

1 ответ

Решение

Ключ заключается в том, чтобы не помещать параметры пары ключ-значение в --binary-opt. Правильный путь здесь:

cyg-wrapper.sh "C:/Progra~1/Edition/vim/vim63/gvim.exe" --fork=2 
  --servername=GVIM --remote-tab-silent .bashrc.

Это немного сложнее при переходе в vimrc. Я этого не знал, но при передаче в vimrc параметр -u должен появляться раньше других параметров; этот:

cyg-wrapper.sh "C:/Progra~1/Edition/vim/vim63/gvim.exe" --fork=2 
      --servername=GVIM --remote-tab-silent -u ~/.vimrc file1

фактически откроет три вкладки, одну с именем "-u", одну с ".vimrc" и одну с "file1". Чтобы Cygwin и gvim открыли file1 на новой вкладке после поиска указанного.vimrc, вам нужно:

cyg-wrapper.sh "C:/Progra~1/Edition/vim/vim63/gvim.exe" --fork=2 
      -u ~/.vimrc --servername=GVIM --remote-tab-silent file1

Порядок параметров представляется важным. Я могу ошибаться; Я только что понял это экспериментально, и это не упомянуто в документации GVim, но я думаю, что сначала идут параметры для cyg-wrapper.sh, такие как --fork=2, затем однобуквенные параметры для vim, такие как -u затем другие параметры vim с двойными дефисами и, наконец, список файлов, которые нужно открыть.

Другие вопросы по тегам