Tak więc jestem przede wszystkim programistą .Net, który od czasu do czasu robi pewne rzeczy w Javie, Pythonie i kilku innych. Słyszałem, że wiele osób chwali Vima i Emacsa za znaczne zwiększenie wydajności po tym, jak podstawy zostaną sprecyzowane. Z pewnością widzę, ile funkcji może być bardzo przydatnych przy wystarczającej praktyce, a nawet wierzę, że krzywa uczenia się jest prawdopodobnie warta wysiłku. Jednak ... wydaje się, że naprawdę musiałbyś być jakimś czarodziejem makr i skrótów klawiszowych, aby być tak wydajnym w Vimie lub Emacsie, jak przeciętny programista w Visual Studio, Netbeans, Eclipse lub innych platformach. Zacząłem uczyć się korzystania z Vima i uważam, że niektóre z jego funkcji są niesamowite (na przykład edycja kolumn), ale wydaje się, że wielu narzędzi dostarczanych przez ciężkie IDE po prostu nie można zastąpić, kupując nawet najbardziej wyciśnięty tekst redaktor.
- generowanie plików dbml dla Linq-to-SQL
- Zautomatyzowane testowanie
- projektowanie interfejsów użytkownika
- Tworzenie / organizowanie projektów i rozwiązań
Wiem, że Vim i Emacs potrafią bardzo mocno robić wiele tych samych rzeczy, które VS może (np. Intellisense, refaktoryzacja itp.) I może wykonać niektóre lub wszystkie przykłady, które podałem, ale czy to realistyczne że ktoś pracujący na tych platformach faktycznie skorzystałby z Vima lub Emacsa?
Odpowiedzi:
Działają tam różne koncepcje, co może nie dziwić, ponieważ VS łączy w sobie wiele dość odmiennych funkcji. Jeden cytat (z tej strony) sugeruje, że Emacs nie jest dobrym IDE, Unix jest dobrym IDE. Chodzi o to, że w świecie Linux / Unix polegasz na wielu specjalistycznych narzędziach, które dobrze ze sobą grają, a nie na jednym monolitycznym narzędziu, które to wszystko robi.
Teraz programuję przede wszystkim w języku C # i do tego używam VS. Uwielbiam też Emacsa i używam go w zasadzie do wszystkiego innego. Teraz, jak mówisz, co możesz zrobić w Emacsie i co lepiej zrobić w Emacsie, są różne. Ale w wielu przypadkach nie jest to mapowanie 1 do 1 i istnieją różne sposoby osiągnięcia tych samych celów za pomocą edytora tekstu i / lub innych narzędzi.
Początkowo zamierzałem zająć się każdym z twoich punktów, ale odpowiedź zawsze sprowadzała się do „tak, możesz” w jakiejś formie. Zazwyczaj polegasz na: 1) zewnętrznym narzędziu (takim jak projektant interfejsu użytkownika), aby wygenerować kod, zaimportuj go; 2) obsługa automatyzacji z poziomu edytora (jak kod Elisp w Emacsie) w celu automatyzacji powtarzalnych zadań; lub 3) przyzwyczaisz się do używania narzędzi tekstowych zamiast wizualnych (takich jak MSBuild i pisanie własnych plików projektów zamiast polegać na konfiguracji VS).
W świecie Emacsa nie masz narzędzia, które to wszystko robi, masz wiele narzędzi i możesz wyhodować więcej narzędzi, których potrzebujesz. Nie wiem jeszcze wystarczająco dobrze, aby to wszystko zrobić, więc używam VS i jestem zadowolony z narzędzi, które mi oferuje. VS to naprawdę potężne, naprawdę dobre IDE. Teraz, gdybym robił Javę, musiałbym debatować, którego narzędzia użyję, ponieważ nie znam dobrze Eclipse ani IntelliJ. W przypadku każdego innego języka Emacs wygrywa, ponieważ zrobi to dla mnie o wiele więcej niż jakikolwiek inny edytor tekstowy lub w połowie wykonane IDE, których mogą używać te języki. (Może z wyjątkiem Smalltalk, ale to wyjątkowy przypadek.)
źródło
Dam ci mój przykład: pracuję na systemie, który jest w dużej mierze (ale nie w 100%) zakodowany w języku C #. Systemu nie można zbudować z Visual Studio - jest zbyt skomplikowany. Dlatego nie mam pliku SLN (niektóre osoby próbowały go utrzymywać, mimo że nie budujemy z nim produktu, ale okazało się to niemożliwe) i nie mam zalet inteligentnego przeglądania, przeglądania kodu, diagramy klas itp. Narzędzie, które działa dla mnie to vim + ctags. Nawet to nie jest idealne (ctagi łatwo się pomylić), ale jest o wiele lepsze niż używanie gorszego edytora kodu bez obsługi przeglądania kodu.
Teraz rozumiem, że większość programistów .NET lub Java nie jest w takiej samej sytuacji jak ja i prawdopodobnie lepiej jest używać IDE, jeśli ma dobry edytor kodu lub przynajmniej dodatek poprawiający domyślny. W Visual Studio istnieją dodatki takie jak VsVim, które mogą sprawić, że kodowanie będzie przyjemniejsze. To samo dotyczy Eclipse AFAIK.
źródło
Wątpię, aby wielu używało VIM lub Emacsa. Ale jeszcze nie znalazłem programisty, który nie korzysta z edytora tekstu (czy to jednego z nich, czy czegoś innego) w celu uzyskania pełnego IDE dla niektórych rzeczy, często wielu rzeczy.
Pamiętaj, że w twojej pracy jest o wiele więcej niż pisanie kodu Java, C # lub C ++. Są skrypty ANT, pliki makefile, pliki XML, pliki konfiguracyjne różnego rodzaju. W przypadku wielu małych zadań czas uruchomienia tego IDE może być po prostu zbyt długi. Uruchomienie Eclipse może zająć kilka minut, podobnie jak VS. To zbyt długo, aby szybko zmienić coś w jednym źródle lub po prostu sprawdzić coś w znanym pliku. Ładowanie pliku do VIM zajmuje tylko kilka sekund.
źródło
Uważam, że używanie IDE i vima (mojego osobistego ulubionego edytora) nie wykluczają się wzajemnie. Podczas programowania .NET zwykle konfiguruję kombinację klawiszy skrótu, która otworzy bieżący plik, nad którym pracuję w IDE w vimie i umieści kursor w tym samym miejscu. W ten sposób, jeśli chcę robić rzeczy, w których vim jest świetny, (np. Używanie makr, edytowanie w pionie, ponowne wcięcie, różnicowanie itp.), Wtedy uderzam w kombinację klawiszy i huk mam mój ulubiony edytor, zrób moje zmiany, zapisz plik i wyjdź, a następnie znowu wrócę do IDE (możesz go skonfigurować, aby plik ładował się automatycznie, gdy zostanie edytowany poza IDE w VS). W ten sposób uzyskuję to, co najlepsze z obu światów.
Kiedyś używałem języków skryptowych do manipulowania plikami tekstowymi w skomplikowany sposób. Kiedy odkryłem moc używania makr vima (i kilka innych funkcji), odkryłem, że mogę dokonywać tego rodzaju edycji / manipulacji znacznie szybciej i wydajniej niż w języku skryptowym.
Bardzo często generuję jednorazowe skrypty powłoki, aby wykonywać skomplikowane czynności przy użyciu vima, wykonywać skrypty powłoki, które zbudowałem, a następnie wyrzucać.
moje 2 centy :)
źródło
Spójrz na projekty OpenIDE i Continuous Tests . Pierwszy skupia się na dodaniu obsługi projektów .NET do dowolnego edytora, w tym VIM i Emacs. Drugi to ciągły tester podobny do autotestu Ruby / Pythons Sniffer / Autonose. Może działać jako wtyczka VS lub samodzielna.
źródło