5

Я только что установил Cygwin, и я немного озадачен тем, как он работает. Я вижу, что у меня есть "домашняя" папка в C:\cygwin\home . Я уже установил и настроил Mercurial, Vim, Git и т.д. На моем компьютере с Windows, используя соответствующие установщики. Как я могу позволить Cygwin использовать эти программы, а также их конфигурационные файлы (_vimrc и т.д.)?

3 ответа3

3

Cygwin предназначен в первую очередь для обеспечения Linux-подобной среды поверх Windows. Лучше всего работает с программами, скомпилированными для Cygwin. Он может работать напрямую с родными программами Windows, но вы должны быть осторожны.

Одна из особенностей Cygwin заключается в том, что он пытается сделать файловую систему Windows похожей на типичную файловую систему Linux, например, программы находятся в каталоге /usr /bin. Программы Cygwin не ссылаются на диск C: они ссылаются на /cygdrive /c. (Некоторые программы Cygwin понимают «C:», но это исключение.) Хотя ваш домашний каталог находится в папке C:\cygwin\home из Windows, он отображается в каталоге /home из Cygwin. Это означает, что передача полных путей между программами Cygwin и программами Windows может быть непростой задачей: программы Windows не понимают полные пути Cygwin, а программы Cygwin обычно не понимают полные пути Windows. Есть утилита Cygwin, cygpath, которая может транслировать пути Windows и Cygwin, но вы должны сами вставить этот уровень перевода по мере необходимости.

Я не знаю общего решения проблемы взаимодействия программ Cygwin с программами Windows. Лучшее решение зависит от того, что вы пытаетесь сделать, от того, сколько вы хотите жить в мире Linux или от мира Windows, и от программ, которые вам нужно использовать.

Если вы планируете использовать Mercurial, Vim, Git и т.д. Из командной строки Cygwin, я бы порекомендовал установить версии этих программ для Cygwin. В вашей системе могут быть версии для Windows и Cygwin, но вы должны быть осторожны со своим PATH.

Я попытался настроить Windows gvim для использования оболочки Cygwin и, наконец, сдался. Теперь я использую Windows gvim при открытии файлов из графического интерфейса и Cygwin vim при открытии файлов из командной строки. В Windows Vim слишком много мест, где соглашения API-интерфейса ОС Windows должны соответствовать соглашениям Cygwin о внешних программах. Тем не менее, использовать одни и те же файлы конфигурации пользователя для обоих легко. В оболочке Cygwin Bash:

ln -s /cygdrive/c/Documents\ and\ Settings/username/_vimrc ~/.vimrc
ln -s /cygdrive/c/Documents\ and\ Settings/username/vimfiles ~/.vim

Вам просто нужно убедиться, что все эти файлы имеют окончания строки Unix и использовать d2u для тех, которые этого не делают. Cygwin's Vim (любой Unix Vim) ожидает окончания строки Unix; Windows Vim допускает окончания строк Unix или DOS.

Я немного использовал Cygwin, но я не эксперт. Вышеуказанное просто отражает мой опыт.

2

Большинство проблем будет решено, если убедиться, что эти программы находятся в переменной среды PATH для операционной системы.

В зависимости от того, какая у вас версия Windows, это:

  1. нажмите начать
  2. щелкните правой кнопкой мыши Компьютер или Мой компьютер (или перейдите в Настройки системы через Панель управления)
  3. нажмите вкладку "Дополнительно" или "Дополнительные параметры системы"
  4. нажмите "Переменные среды"
  5. выделите путь
  6. добавьте путь к папке, содержащей любые программы, которые вы хотите (например, добавьте C:\vim72; в начало вашей переменной PATH, теперь, если вы введете "vim" в cygwin, vim должен выполнить (ps точка с запятой важна))
1

Я написал скрипт, который поможет исправить некоторые раздражающие проблемы с взаимодействием окон и cygwin (путей).

makewin() {    
eval "function $1 {
  # Don't taint locals
  local FN
  declare -a FN
  local x
  # For each option
  for x in \"\${@}\"
  do
     # Fix the path to "windows"
     FN[\"\${#FN[*]}\"]=\`cygpath -w \"\$x\"|sed 's/ /\\\\ /g'\`
  done

  # Run the Command
  \"$2\" \"\${FN[@]}\" >/dev/null 2>/dev/null &
   }"; 
}

Затем я запускаю его для каждой команды, которую хочу исправить

makewin vi /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe
makewin np /cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe

Он создает псевдоним функции для команды, которую я хочу, которая устраняет проблемы пути к параметрам. Это добавлено в мой ~/.bash_profile

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