2012-09-10 33 views
9

Czasami muszę pracować w systemie Windows, co często oznacza używanie powłoki Bash. Jeśli jestem (na przykład) w vim (niegvim) z kilkoma plikami otworzyć, a uderzę CtrlZ krótko wrócić do powłoki i zrobić coś przed powrotem do vim, zamiast zawieszania mój vim proces Git Bash tworzy nową powłokę DOS. To ostatnia rzecz, jakiej bym kiedykolwiek chciał. Googling turns up nothing useful (w tym momencie - YMMV w mojej przyszłości). Co się dzieje?Dlaczego nie działa Ctrl-Z na powłoce binarnej systemu Windows Git?

Odpowiedz

1

czasami trzeba pracować w Windows, co często oznacza używanie powłoki Git Bash.

Dobrze. Ja też.

Jeśli jestem (na przykład) w vim (nie gvim) z kilkoma plikami otwartymi, a ja wybieram^Z, aby krótko wrócić do powłoki i zrobić coś przed powrotem do vima, zamiast zawieszenia mojego procesu vima Git Bash tworzy nową powłokę DOS.

Jeśli wykonasz inne procesy w bicie git, CTRL-Z również ich nie zawiesi. Vim pracuje nad tym, a zamiast tego tworzy powłokę, aby osiągnąć podobny rezultat. Vim jest narzędziem w oknach, które nie wymaga bashu, raczej wiersz poleceń systemu Windows będzie koniecznie zainstalowany na maszynie Windows. Zakładam, że jest to bezpieczny wybór programu binarnego Windows.

To ostatnia rzecz, jakiej bym kiedykolwiek chciał. Googling nie okazuje się przydatny (w tym momencie - YMMV w mojej przyszłości). Co się dzieje?

Domyślam się, że vim ma mapę CTRL-Z do tworzenia powłoki DOS. Jeśli chcesz utworzyć powłokę bash zamiast, można wpisać:

:!sh

I będzie wykonywany w powłoce bash.

1

Zgaduję, że powodem tego jest to, że Windows nie implementuje API procesu zawieszania POSIX. Miałem ten sam problem i nie znalazłem ogólnego rozwiązania. Ale dla konkretnych wspólnych przypadkach (takich jak gvim), praca wokół jest stworzenie skryptu gdzieś w PATH (np/c/bin/gVim) wzdłuż linii

#!/bin/env bash 
    /c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe [email protected] & 
+0

Jeśli Cię rozumiem, używasz tego jako opakowania dla gvima i sugerujesz, że^Z *** WILL *** działa dla skryptu opakowania, nawet jeśli nie działa dla rzeczywistego plik wykonywalny? Okay, to ma sens, ponieważ prawdziwy plik wykonywalny to plik * exe *. – iconoclast

+0

Niestety, nie,^Z nadal nie działa. Cały skrypt robi gvima na tle, gdy wpisuję "gvim" w bashu, więc nie muszę^Z, aby wpisać następne polecenie. Zasadniczo, po prostu oszczędza konieczności pamiętania o wpisaniu i po komendzie. – setrofim

+0

Nie jestem pewien, w jaki sposób mi to pomaga. Używam vima, nie gvim, więc jest otwarty w terminalu. Chcę sposób, aby zawiesić go, aby powrócić do linii poleceń. – iconoclast

Powiązane problemy