3

Когда я даю команду gvim в Cygwin, я хочу, чтобы она вызывала gvim, который я установил в моей Windows.

Я попытался написать функцию в моем .bashrc под названием gvim которая вызывает gvim.exe в моей папке Program Files, используя cygpath и все такое, но проблема в том, что, очевидно, вызывает gvim с окружением Cygwin; :echo $HOME печатает C:\cygwin\home\Sundar вместо C:\Users\Sundar и :diffsplit сообщает об ошибках при создании временных файлов, которые, как я полагаю, связаны с тем же. Итак, как я могу вызвать gvim из Cygwin, но сделать так, как если бы он был вызван, скажем, через меню «Пуск»?

Я попытался изменить команду для передачи пути gvim в cmd.exe /c , но это тоже как-то настраивает ту же среду. Что мне нужно сделать, чтобы сделать эту работу?

2 ответа2

3

gVim.exe ищет переменную HOME при запуске. В вашем случае среда Cygwin имеет свой собственный набор HOME , поэтому она использует его.

Вы можете изменить значение HOME в своей среде, но это может повлиять на другие приложения. Опять же, вы можете этого хотеть. Если вы этого не хотите и предполагаете, что ваша оболочка Cygwin использует оболочку Bash, поскольку вы уже предложили в своем вопросе создать псевдоним или функцию, я бы рекомендовал установить переменную var только для этой команды. экземпляр, который Bash позволяет вам сделать, просто установив его прямо перед командой, разделенной пробелом ...

VAR=abc command

Вышеприведенная command запускается так, как если бы VAR был установлен в abc , независимо от того, каким он может быть на самом деле. Таким образом, ...

alias gvim='HOME=/cygdrive/c/Users/Sundar /path/to/gvim.exe'

... или же...

gvim() { HOME=/cygdrive/c/Users/Sundar /path/to/gvim.exe $1; }

... позволит вам запустить исполняемый файл gVim с установленным по вашему предпочтительному пути переменной HOME , не нарушая при этом вашу среду Cygwin.

0

Я нашел более простое решение, которое отслеживает все необходимые переменные среды, хотя и имеет одно ограничение. Решение - explorer.exe filename.ext в командной строке Cygwin, где ext - это расширение, которое уже связано с gVim в Windows. Это открывает gVim в полностью Windows-контексте, насколько я вижу, $ HOME автоматически устанавливается в C:\Users\Sundar,:diffsplit работает без ошибок и т.д. Одно ограничение должно быть очевидным сейчас - вам нужно иметь легко доступен существующий файл с расширением, связанным с gVim, иначе это не сработает.

Обновление: во время поисков по этому поводу я наткнулся на www.commandlinefu.com/commands/view/2729 (прямо сейчас, только текстовый кеш на http://webcache.googleusercontent.com/search?strip=1&q=cache:http % 3A% 2F% 2Fwww.commandlinefu.com% 2Fcommands% 2Fview% 2F2729 ) и обнаружил, что explorer.exe 'C:\Program Files (x86)\Vim\vim73\gvim.exe' открывает gvim надежно, без необходимости полагаться на файловых ассоциациях. Сейчас я ищу способ передачи аргументов в gvim, открытый таким образом.

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