Cygwin: Korzystasz z programów już zainstalowanych w systemie Windows?

5

Właśnie zainstalowałem Cygwin i jestem trochę zdezorientowany, jak to działa. Widzę, że mam folder „domowy” C:\cygwin\home. Zainstalowałem już i skonfigurowałem Mercurial, Vim, Git itp. Na moim komputerze z systemem Windows za pomocą odpowiednich instalatorów. Jak mogę pozwolić Cygwin korzystać z tych programów, a także ich plików konfiguracyjnych (_vimrc itp.)?

john2x
źródło
Dobre pytanie, chciałem porównać pakiet mingw64-gcc z natywną zainstalowaną wersją systemu Windows.
jiggunjer

Odpowiedzi:

3

Cygwin jest przeznaczony przede wszystkim do zapewnienia środowiska podobnego do Linuksa na systemie Windows. Działa najlepiej z programami skompilowanymi dla Cygwin. Może współpracować bezpośrednio z rodzimymi programami Windows, ale musisz być ostrożny.

Jedną z cech Cygwin jest to, że stara się, aby system plików Windows wyglądał jak typowy system plików Linux, np. Programy znajdują się w / usr / bin. Programy Cygwin nie odnoszą się do dysku C: odnoszą się do / cygdrive / c. (Niektóre programy Cygwin rozumieją „C:”, ale są to wyjątki.) Chociaż katalog domowy pojawia się w C: \ cygwin \ home z Windows, pojawia się w / home z Cygwin. Oznacza to, że przekazywanie pełnych nazw ścieżek między programami Cygwin i programami Windows może być trudne: programy Windows nie rozumieją pełnych nazw ścieżek Cygwin, a programy Cygwin na ogół nie rozumieją pełnych nazw ścieżek Windows. Istnieje narzędzie Cygwin, cygpath, które może tłumaczyć między ścieżkami Windows i Cygwin, ale musisz samodzielnie wstawić ten poziom tłumaczenia.

Nie znam ogólnego rozwiązania problemu łączenia programów Cygwin z programami Windows. Najlepsze rozwiązanie zależy od tego, co próbujesz zrobić, od tego, ile chcesz żyć w świecie Linuksa vs. życie w świecie Windows, oraz od programów, których potrzebujesz.

Jeśli planujesz używać Mercurial, Vim, Git itp. Z wiersza poleceń Cygwin, zaleciłbym zainstalowanie wersji tych programów Cygwin. Możesz mieć w systemie zarówno wersje Windows, jak i Cygwin, ale musisz być ostrożny ze swoją ŚCIEŻKĄ.

Próbowałem skonfigurować gvima systemu Windows do używania powłoki Cygwin i ostatecznie zrezygnowałem. Teraz używam gvima dla Windows podczas otwierania plików z GUI i Cygwin vim podczas otwierania plików z wiersza poleceń. W systemie Windows Vim jest po prostu zbyt wiele miejsc, w których konwencje interfejsu API systemu operacyjnego Windows muszą być dostosowane do konwencji programów zewnętrznych Cygwin. To powiedziawszy, używanie tych samych plików konfiguracyjnych użytkownika dla obu jest łatwe. W powłoce bash Cygwin:

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

Musisz tylko upewnić się, że wszystkie te pliki mają końcówki linii uniksowej i używać d2una tych, które nie mają. Cygwin's Vim (dowolny Uniksowy Vim) oczekuje zakończenia linii uniksowych; Windows Vim akceptuje zakończenia linii Unix lub DOS.

Użyłem Cygwina dość często, ale nie jestem ekspertem. Powyższe odzwierciedla moje doświadczenia.

garyjohn
źródło
Więc jeśli mam już mingw-gcc zainstalowany w systemie Windows, tak naprawdę nie potrzebuję też jego wersji cygwin? używanie makew cygwinie powinno korzystać z moich plików b ++ g ++ w systemie
Windows
2

Większość problemów zostanie rozwiązana przez upewnienie się, że programy te znajdują się w zmiennej środowiskowej PATH dla systemu operacyjnego.

W zależności od posiadanej wersji systemu Windows, to znaczy:

  1. kliknij start
  2. kliknij prawym przyciskiem myszy Komputer lub Mój komputer (lub przejdź do Ustawienia systemu za pomocą Panelu sterowania)
  3. kliknij kartę „Zaawansowane” lub „Zaawansowane ustawienia systemu”
  4. kliknij „Zmienne środowiskowe”
  5. przewiń do ŚCIEŻKA
  6. dodaj ścieżkę do folderu zawierającego dowolne programy (na przykład dodaj C: \ vim72; na początku zmiennej PATH, teraz jeśli wpiszesz „vim” w cygwin, vim powinien się uruchomić (ps średnik jest ważny))
Joseph Hansen
źródło
Dzięki. Właśnie próbowałem hg, gita gvimoni wydają się działać (byli już w mojej ŚCIEŻCE). Ale vimdaje mi błąd " / cygdrive / c / msysgit / msysgit / bin / vim: linia 2: $ '\ r': nie znaleziono polecenia / cygdrive / c / msysgit / msysgit / bin / vim: linia 3: / share / vim / vim73 / vim: Brak takiego pliku lub katalogu „Dlaczego on szuka /cygdrive/c/msysgit?
john2x
Prawdopodobnie musisz przejść do tego katalogu (/ share / vim / vim73 / vim) i upewnić się, że jest w nim plik vim.exe. Jeśli nie, musisz dodać katalog, który faktycznie zawiera vim.exe. Innymi słowy, jeśli vim.exe znajduje się w C: \ vim \ vim27 \ vim.exe, dodanie c: \ vim \ do PATH niekoniecznie będzie działać. Pamiętaj, aby wykonać C: \ vim \ vim27.
Joseph Hansen
Ale gvimdziała dobrze i znajdują się w tym samym katalogu.
john2x
To bardzo dziwne ...: - / Rozejrzę się
Joseph Hansen
W odpowiedzi na twoje pytanie w komentarzu, / cygdrive / c / jest ścieżką do C: \ z cygwin i msysgit Wierzę, że jest to coś wewnętrznego cygwin. Nie wydaje się to stanowić problemu, ponieważ można przejść do następnego odniesienia do /share/vim/vim73/vim. To może nie być poprawna ścieżka. Wydaje się również, że \rjest to nieprawidłowe polecenie. Zdałeś, \rkiedy wykonałeś polecenie?
Joseph Hansen
1

Napisałem skrypt, który pomoże rozwiązać niektóre irytujące problemy z interakcjami z oknami i cygwinem (ścieżkami).

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 &
   }"; 
}

Następnie uruchamiam go dla każdego polecenia, które chcę naprawić

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

Tworzy alias funkcji do polecenia, które chcę rozwiązać problemy ze ścieżką parametru. Jest to dodawane do mojego ~ / .bash_profile

Mike Sandler
źródło