Jakie są zalety i wady Vima i Emacsa?


372

Jak porównałbyś tych redaktorów? Jakie są zalety i wady każdego z nich?

[ uwaga ] Nie ma na to odpowiedzieć ci, którzy „nienawidzą jednego i kochają drugiego” lub ci, którzy nie używali obu.


1
M-! emacs RETTo jest jak wyszukiwarka google dla „google”
Seamus

11
Duplikat SO pytania: stackoverflow.com/questions/1430164/… z ubuntu askubuntu.com/questions/804/… i programistów programmers.stackexchange.com/questions/1271/… Tutaj pokocham rozprzestrzenianie.
Trey Jackson,

27
Dziwi mnie, że nikt nie wspomniał o XKCD 378 .
tedder42

9
Zauważ, że te pytania nigdy nie zawracają sobie głowy pytaniem o porównanie z Edem, jedynym prawdziwym edytorem WYGIWYG!
Mark K Cowan

4
@ tedder42 Zatem równie dobrze możesz powiedzieć „Mel” ...
Tobias Kienzler,

Odpowiedzi:


420

Używam obu, chociaż gdybym musiał wybrać jeden, wiem, który wybrałbym. Mimo to postaram się dokonać obiektywnego porównania kilku kwestii.

  • Dostępne wszędzie? Jeśli jesteś profesjonalnym administratorem systemu, który współpracuje z systemami Unix lub jesteś zaawansowanym użytkownikiem na urządzeniach wbudowanych (routery, smartfony z Busybox,…), musisz znać vi (nie Vim), ponieważ jest on dostępny na wszystkich systemach Unix i większości Systemy uniksopodobne, stacjonarne, serwerowe lub wbudowane. Dla zwykłego użytkownika ten argument jest nieistotny: Emacs jest łatwo dostępny dla każdego systemu operacyjnego typu desktop / serwer, a ponieważ obsługuje zdalną edycję, wystarczy go mieć na komputerze stacjonarnym.

  • Nadęty? Emacs kiedyś humorystycznie opowiadał się za „Osiem megabajtów i ciągłą zamianą”. W tej chwili na moim komputerze Google Chrome potrzebuje około tyle pamięci RAM na kartę, co Emacs na 100 otwartych plików, i nawet nie wspomnę o Firefoksie. W XXI wieku wzdęcie Emacsa to tylko mit.

    Funkcja uwędzić nie ma problemu. Jeśli go nie użyjesz, nie musisz wiedzieć, że tam jest. Funkcje Emacsa nie przeszkadzają, gdy ich nie używasz, a dokumentacja jest bardzo dobrze zorganizowana.

  • Czas uruchamiania : zwolennicy Vi (m) narzekają na czas uruchamiania Emacsa. Tak, Emacs uruchamia się powoli, ale to nie jest wielka sprawa: uruchamiasz Emacsa raz na sesję, a następnie łączysz się z uruchomionym procesem emacsclient. Powolne uruchamianie Emacsa to w większości mit.

    Jest jeden wyjątek, gdy logujesz się na zdalnym komputerze i chcesz tam edytować plik. Uruchomienie zdalnego Emacsa jest (zwykle) wolniejsze niż uruchomienie zdalnego Vima. W niektórych sytuacjach możesz utrzymać Emacsa działającego na ekranie. Możesz także edytować zdalne pliki z poziomu Emacsa, ale przerywa to przepływ, jeśli jesteś w sesji ssh w terminalu. (Od XEmacs 21 lub GNU Emacs 23 możesz otworzyć okno Emacsa z działającej instancji X wewnątrz terminala).

    Odwracając tabele, zauważyłem, że Vim ładuje się znacznie dłużej niż Emacs ( vim -u /dev/nullvs. emacs -q). Wprawdzie było to na dziwnej platformie (Cygwin).

  • Początkowa krzywa uczenia się: różni się w zależności od osoby. Wykres Michała Mrożka wywołał u mnie chichot. Poważnie, zgadzam się, że krzywa uczenia się Vima zaczyna się bardziej stroma, bardziej stroma niż jakikolwiek inny edytor, chociaż można to zmniejszyć za pomocą gvim.

    Ponieważ rozwiałem kilka mitów Emacsa, pozwól mi rozwiać mit vi: edytor modalny nie jest trudny ani bolesny w użyciu. To wymaga trochę nawyku, ale po chwili wydaje się bardzo naturalne. Gdybym miał przeprojektować vi (m), zdecydowanie zachowałbym tryby.

  • Asymptotyczna krzywa uczenia się: Zarówno Vim, jak i Emacs mają wiele funkcji, a po latach użytkowania będziesz odkrywać nowe.

  • Produktywność : To niezwykle trudny temat. Zwolennicy vi (m) twierdzą, że możesz zrobić prawie wszystko bez wychodzenia z domowego rzędu, a to czyni cię bardziej wydajnym, gdy najbardziej tego potrzebujesz. Zwolennicy Emacsa odpisują, że Emacs ma wiele poleceń, które nie są często używane, więc nie gwarantuj powiązania klawiszy, ale są cholernie wygodne, gdy ich potrzebujesz ( obowiązkowe odniesienie xkcd ).
    Moim osobistym zdaniem jest to, że Emacs ostatecznie wygrywa, chyba że masz upośledzenie pisania (i nawet wtedy możesz skonfigurować Emacsa, aby wymagał tylko sekwencji klawiszy, a nie kombinacji takich jak Ctrl+ litera). Klucze do rzędu domów są fajne, ale często nie są tak bardzo wygrane, ponieważ musisz przełączać tryby. Nie sądzę, żeby Vim mógł zrobić coś znacznie wydajniej niż Emacs, podczas gdy odwrotność jest prawdziwa.

  • Możliwość dostosowania : Oba edytory są programowalne, a dla obu dostępna jest obszerna lista dostępnych pakietów. Jednak Vim jest edytorem z językiem makr; Emacs to edytor napisany w Lisp z kilkoma prymitywami ad-hoc. Emacs wygrywa spektakularnie, gdy próbujesz zrobić coś, o czym autorzy po prostu nie pomyśleli. To nie zdarza się codziennie, ale gromadzi się przez lata.

  • Więcej niż redaktor : Vim jest redaktorem. Emacs to nie tylko edytor: to także IDE, menedżer plików, emulator terminala, przeglądarka internetowa, klient poczty, klient wiadomości ... To, czy to dobrze, czy źle, jest kwestią do dyskusji. Ale możesz używać Emacsa jako zwykłego edytora (patrz „funkcja wzdęcia” powyżej).

  • Jako IDE : Zarówno Vim, jak i Emacs mają wsparcie dla wielu języków programowania i innych formatów tekstowych. Poza podstawami, takimi jak kolorowanie składniowe i automatyczne wcięcia, oba mają zaawansowane funkcje IDE, takie jak wyszukiwanie odnośników w kodzie i dokumentacji, wspomagane wstawianie i refaktoryzacja, zintegrowana kontrola wersji oraz możliwość inicjowania kompilacji i przejścia do pierwszego błędu.

    Jedną domeną, w której Emacs jest lepszy niż Vim, jest interakcja z asynchronicznymi podprocesami. To wtedy zaczynasz długą kompilację i chcesz zrobić coś innego w tej samej instancji edytora, gdy kompilator się ubija. Lub gdy chcesz wejść w interakcję z pętlą do odczytu i wydruku - Emacs naprawdę na to świeci, Vim ma do zaoferowania tylko niezdarne hacki. Niemniej jednak, nowy rozwidlenie vima, Neovim udowodnił, że to naprawił i zaimplementował inne poprawki błędów niezaimplementowane w standardowym vimie.


34
Nie mogę się zgodzić z punktem „Więcej niż redaktor”. Vim ma również wiele wtyczek, w tym te, które zmieniają go w menedżera plików lub IDE (jak vim-latex).
rozcietrzewiacz

7
To sprawiło, że poczułem się mały ...
gnometorule,

10
@rozcietrzewiacz: Tak, ale czy możesz przeglądać sieć w Vimie? Czytasz e-mail? Sprawdź swój kanał RSS? Nie sądzę, abyś mógł zaprzeczyć, że Emacs jest po prostu silniejszy, chociaż użyteczność tej mocy zależy od tego, czego szukasz.
musicfreak

3
@Bananguin Emacs jest lepszy we wszystkim, co wymaga interakcji z REPL . Na przykład dowód ogólny jest bardzo fajny (oczywiście jest to bardzo wąska domena aplikacji). Emacs jest dobry w robieniu rzeczy, o których nikt wcześniej nie pomyślał: Emacs Lisp jest o wiele ładniejszy niż język makro Vima. Emacs ma lepszą obsługę wcięcia kodu źródłowego, ale nie sądzę, że jest to wada Vima jak brak bibliotek (obsługa Vima ogranicza się do podświetlania składni).
Gilles

5
@MichaelHampton Musisz być młody. W 1985 roku było to osiem megabajtów . Do tej pory przypuszczam, że powinno to być Osiem tysięcy Megabajtów, z wyjątkiem tego, że nikt nie zauważa użycia pamięci Emacsa, ponieważ jest to mniej niż jedna karta przeglądarki.
Gilles

267

Opublikuję to, co według mnie są głównymi zaletami każdego z nich:


Emacs ma znacznie więcej rozszerzeń, które pozwalają ci wykonywać zadania, które są w niewielkim stopniu związane z edytorem tekstu, takie jak przeglądanie systemu plików lub bałagan z kontrolą wersji, oraz rozszerzenia, które nie są w żaden sposób związane z edytorem tekstu, takie jak czytanie kanałów RSS. Jeśli chcesz środowiska zamiast tylko edytora tekstu, Emacs będzie lepszy niż Vim. Myślę też, że Emacsa jest znacznie łatwiej się nauczyć, pomimo tego, w co niektórzy chcieliby wierzyć:

Krzywa uczenia się redaktora

W szczególności myślę, że początkujący użytkownik Emacsa będzie szybszy niż początkujący użytkownik Vima


Z drugiej strony Vim jest niezaprzeczalnie szybszy. Wydaje się, że jest to podstawowa część argumentu, ale moim zdaniem nie ma w ogóle konkurencji; Uważam się za płynnego użytkownika Emacsa i nie mogę się równać z kilkoma osobami, które znam, które mają taką samą wiedzę o Vimie. Problem polega na tym, że liczba osób, które mają wystarczającą biegłość w posługiwaniu się Vimem, jest tak niewielka (z około 30 osób, z którymi regularnie rozmawiam, które używają Vima, myślę, że tylko jedna jest w tym wyjątkowo dobra). Istnieje duża różnica między możliwym przyrostem prędkości a rzeczywistym przyrostem prędkości, jaki osiągniesz; Użytkownicy Emacsa będą prawie tak szybko jak 99% użytkowników Vima, a (jak powiedziałem w sekcji Emacs) początkujący użytkownicy Emacsa prawdopodobnie będą szybsi niż początkujący użytkownicy Vima


8
umm ... Wiem, że vim ma więcej niż jedną wtyczkę kontroli wersji. a jedna z tych wtyczek obsługuje wszystkie popularne systemy ... jeśli emacs ma więcej ... ile z nich potrzebujesz, aby zrobić to samo?
ksenoterracid

13
@xeno Nie wiem, jakie wtyczki posiada vim, więc może VCS był złym przykładem, ale jestem przekonany, że Emacs ma znacznie więcej wtyczek niż vim, ponieważ vim nie zgadza się z filozofią „jeden program robi wszystko”
Michael Mrozek

4
Czy ktoś mógłby wyjaśnić, co oznacza powyższy wykres emacsa? Jak to interpretować?
Andrew-Dufresne

27
To żart „w dół króliczej nory” ... To dlatego, że kiedy uczysz się emacsa, w końcu zaczynasz też tworzyć emacsa. (ponieważ Emacs jest tak naprawdę bardzo dużą kolekcją makr / procedur edycyjnych napisanych w interpreterze Lisp.)
ocodo

15
+1 do szybkości twojego doświadczenia jest dobre, ale może 99% jest trochę ekstremalne. Chodzi mi o to, że vim nie jest „trudny do opanowania”, zajmuje tylko kilka lat;)
Johan

81

Jest vidostępny w każdym systemie uniksowym (lub prawie), jednak nie można tego powiedzieć o żadnym innym edytorze. To jest pierwszy powód, imo, do nauki i zapoznania się vi(pamiętaj „vi”, nie „vim”). Nigdy nie widziałem, aby Emacs był dostępny w domyślnej instalacji.

Nie mówię, że nie używaj Emacsa lub jest to jedyny powód, aby używać Vima, ale kiedy chcesz mieć możliwość korzystania z systemów uniksowych, które nie są twoje ... vijest częścią uniwersalnego języka.


1
Jestem całkiem vimużytkownikiem, ale często mam trudności z używaniem vi, najprawdopodobniej z powodu klawisza END (vim go obsługuje, ale vi nie, a przynajmniej domyślnie nie)
phunehehe

25
@phunehehe, jeśli spróbuję użyć nano, skończę z całą masą ijkloOah w moim pliku ... dopóki nie uświadomię sobie, że nie mogę używać ich do nawigacji. Nie używam klawiszy strzałek do nawigacji.
ksenoterrakid

5
To podwójnie w przypadku łączenia się z wolnymi serwerami przez podejrzane połączenia: jedynym edytorem, który mają na pewno (jest to specyfikacja Uniksa, myślę?) Jest vi, a tryb poleceń vi znacznie ułatwia edycję plików przy mniejszej liczbie naciśnięć klawiszy gdy każde naciśnięcie klawisza pojawia się na ekranie przez kilka sekund. Oczywiście krok # 1 zwykle się instaluje vim:)
Gaurav

12
@phunehehe Nie używam esc. Używam ctrl + [robi to samo;)
xenoterracide

8
+1 za komentarz Gaurava. Vi działa doskonale do awaryjnej edycji plików konfiguracyjnych przez gburowate połączenie 3G na wolnym telefonie komórkowym.
LawrenceC

23

Myślę, że oba są niesamowite. Myślę, że jedno z nich może zrobić wszystko, co tylko możesz sobie wyobrazić, i oba są tak konfigurowalne, że do czasu ich dostosowania, oba są dokładnie takie, jakie chcesz, by były, nic więcej ani mniej.

Emacs wyróżnia się tym, że jestem nieco bliższy (choć nadal nie spełnia) norm ISO / IEC dotyczących użyteczności i spójności interfejsów użytkownika, a zatem nie gra tak wielu sztuczek z twoimi „instynktami” na temat tego vima. Żywotność instynktów, które rozwinęłaś podczas pracy z innymi programami, nie zadziała przeciwko tobie.

Vim jest zupełnie innym modelem i pod wieloma względami jest sam w sobie lepszy, ponieważ w znacznie mniejszym stopniu opiera się na sekwencjach Cntrl / Alt, a zamiast tego tylko na trybach, pozwalając ci zachować trudność w głównym rzędzie i pisać szybciej. Ale vim jest praktycznie wyjątkowy i jeśli nie zainstalujesz jakiegoś bardzo niezwykłego oprogramowania towarzyszącego (np. Vimperator, Jumanji / Zathura itp.), Instynkty, które rozwijasz pracując z vimem, nie przejdą na inne programy i odwrotnie. To powiedziawszy, sam zdecydowałem się na vim. Musisz osiedlić się wcześniej czy później, na lepsze lub gorsze, ponieważ trudno jest opanować oba.


1
Jeden komentarz na temat linii „instynkty, które rozwijasz pracując z vimem, nie przejdą na inne programy”: Linia „ustaw tryb edycji vi” może zostać dodana do pliku ~ / .inputrc (w systemie Linux, który go obsługuje) . Umożliwia to składnię w stylu vi do wprowadzania tekstu w programach korzystających z readline dla standardowego wejścia, takich jak sama powłoka bash. Może być (czasem zaskakujące) dużo szersze zastosowanie do instynktów edytorskich, które rozwija się za pomocą vima.
Christian Abbott,

Na szczęście jest wiele osób z tym problemem i stworzyły rozszerzenia dla wielu programów, aby były bardziej podobne do vimów .
DarkWiiPlayer,

21

Oba używam regularnie. Uważam Emacsa za edytor „na żywo”, a Vima używam do szybkich, jednorazowych zadań. Powierzchownie, Emacs jest znacznie bardziej rozdęty niż Vim, więc tak naprawdę nie jest tak wygodnie „odpalić” jak Vim, ale uważam również, że filozofie interfejsu użytkownika od jednego do drugiego obsługują ten paradygmat. Emacs jest o wiele bardziej zbudowany, aby trzymać cię w środku, dzięki czemu rzeczy są przyjemne i wygodne, więc nie musisz wychodzić, podczas gdy vim jest znacznie bardziej „Unixy” i postrzega siebie jako część większego paska narzędzi.

Wiele osób ucieka przed Emacsem z powodu silnego polegania na grubych bitach , ale jest to dla mnie dość głupi powód. Prawdziwą mocą Emacsa nad Vimem jest możliwość dostosowania, a dzięki mocy Vipera itp. To naprawdę nie jest problem. Z pewnością Vim-Script zapewnia własny poziom dostosowywania, a jeśli powiedzmy, że twój ulubiony język programowania nie został wyposażony w odpowiedni wyróżnik składni, z pewnością mógłbyś go ugotować, ale Emacs jest ostatecznie samodzielną maszyną lisp i koniec możesz z tym zrobić o wiele, wiele więcej zabawy. Po prostu nie ma w Vimie takich narzędzi jak gnus lub tryb org . Krótko mówiąc, Emacs to nie tylko edytor, to praktycznie cholerny system operacyjny.

W przypadku manipulowania tekstem powiedziałbym, że są dokładnie na równi.


30
„Emacs byłby świetnym systemem operacyjnym, gdyby tylko miał edytor tekstu warty gówna”. - Przypomniał mi się ten cytat.
amfetamachina

@amphetamachine Nie dostaję oferty. Czy to oznacza poniżać edytor tekstu emacs?
tshepang

To znaczy, chociaż zwykle słyszę to bardziej zjadliwie.
Cody Poll

Jeśli chodzi o samych redaktorów, łatwiej jest mi edytować tekst za pomocą vima, ale muszę dostosować emacsa. Vimscript po prostu nie może znieść seplenienia.
Cody Poll

19

Wpłacę 0,02 USD, ponieważ spędziłem kilka lat, używając emacsa i XEmacsa, a potem przeszedłem do vima. Szczerze mówiąc, korzystałem z vi całkiem sporo w latach 1990-1992, więc znałem interfejs użytkownika.

Emacs

  • Emacs został opisany jako system lisp, który akurat został użyty do napisania edytora, i zawiera w sobie ziarno prawdy. Możesz wdrożyć prawie wszystko, co chcesz w elisp, jeśli zależy ci na poświęceniu czasu na zrozumienie środowiska. Nie mogę powiedzieć, że kiedykolwiek tak dobrze to znałem, ale sporadycznie robiłem te cholerne rzeczy. Emacs i Xemacs nie są w pełni kompatybilne na tym poziomie, więc skrypty innych firm mogą działać na jednym, ale nie na drugim.

  • Zaobserwowano, że RMS i niektórzy inni wybitni hakerzy Emacsa musieli wycofać się z programowania z powodu problemów z OOS, w którym wciąż znajdują się Bill Joy, Bram Moolenaar i inni inni pisarze. Emacs jest twardy na twoich palcach.

  • Emacs jest o wiele bardziej katolickim systemem niż vi i jest postrzegany jako kanoniczny przykład otaczania oprogramowania . Wraz z Netscape jest to jeden z wkładów jwz w udowodnienie tego prawa.

Jedną unikalną rzeczą, którą zrobiłem kiedyś z xemacsem, było uruchomienie go na maszynie i otwarcie sesji x na xterminalu (właściwie starym, zmienionym przeznaczeniu Sun 3/60) w innym pokoju w tym samym buforze w tej samej działającej instancji.

Plusy: Rozszerzalny, potężniejszy niż jakikolwiek inny edytor znany człowiekowi, dojrzała integracja z praktycznie każdym dużym narzędziem do programowania.

Minusy: wątpliwa ergonomia, elisp nie jest łatwy do nauczenia.

Wigor

Disclamer - przeszedłem z używania emacsa do vima około 10 lat temu i zwykle używam vima w systemach Windows i Unix / Linux.

  • Vi i jej potomkowie mają bardzo dobrą funkcję makr klawiatury do automatyzacji zadań edycyjnych. Narzędzie skryptowe w vimie nie jest tak skomplikowane jak elisp, ale możesz je zbudować z obsługą Python, Tcl, Perl i być może innych systemów. Od czasu do czasu piszę skrypty (poza plikami .vimrc) dla vima.

  • Vim ma mniejszą powierzchnię niż emacs, ale w dzisiejszych czasach nie jest to wielka sprawa.

  • Dokumentacja Vima i pomoc online są dość dobre. Emacs ma dość dobrą dokumentację on-line, ale nie sądzę, żeby była tak kompleksowa jak vim.

  • Vim dziedziczy dziwaczny, modalny interfejs użytkownika vi, ale ma teraz możliwość zachowania się podobnie do edytora bezmodalnego, ponieważ można nawigować w trybie wstawiania. W systemie Windows może zachowywać się podobnie do aplikacji systemu Windows.

Plusy: Dobra funkcja makr klawiatury, niezmiernie dobra rozszerzalność i skrypty, ale nie tak dobra jak emacs. Edytory wywodzące się z Vima lub vi są standardem w większości, jeśli nie we wszystkich dystrybucjach Linuksa unixowych lub ogólnych. Ewidentnie lepsza ergonomia.

Wady: Modalny interfejs użytkownika jest dziwny dla osób przyzwyczajonych do interfejsów użytkownika systemu Windows. Mniej problemów z vimem w tych dniach.


Z przyjemnością przeczytałem twoją odpowiedź, ale brakuje mi decydującego czynnika. Co sprawiło, że przeszedłeś z emacsa na vima?
Erik B,

To było po prostu organiczne - a makra klawiaturowe vima działają naprawdę dobrze.
ConcernedOfTunbridgeWells

1
Cholera, jako młodszy programista argument ergonomii jest bardzo atrakcyjny. To mogło po prostu rozstrzygnąć mój wybór, aby uczyć się VI i VIm zamiast Emacsa.
Didier A.

15

Zwykle używam Vima, ale obaj są świetnymi edytorami.

Nauka używania vi była paskudna, ale przeszedłem przez to i nauczyłem się go lubić. Najbardziej frustrujące były moje chwile, kiedy był włączony klawisz Caps Lock. Możesz spróbować z gVimem, ale jedną z największych zalet vi i Emacsa jest umiejętność robienia porządnych rzeczy przy jednoczesnym trzymaniu rąk na klawiaturze, a gVim prawdopodobnie utrzyma cię przy użyciu myszy. (Nauka gry w gry roguelike dała mi jednocześnie ćwiczenie z klawiszami ruchu kursora, ale czasami próbowałem poruszać się po dokumentach po przekątnej).

Emacs jest prawdopodobnie bardziej dostępny. Jest niemodna i nie zamierzasz się popsuć, naciskając klawisz Caps Lock. Pomysł kontrolowania edytora poprzez pisanie liter przy wciśniętym klawiszu sterującym nie powinien być zbyt obcy dla współczesnych zaawansowanych użytkowników, chociaż rzeczywiste klawisze do wykonywania zadań będą wydawać się dzikie i arbitralne dla typowego użytkownika systemu Windows / Mac OS X. Ponownie, wersje, które pozwalają na używanie myszy, nie sprzyjają na dłuższą metę.

Oba wymagają pewnego poziomu wiedzy specjalistycznej, aby skutecznie korzystać. W przeciwieństwie do, powiedzmy, Notatnika, nie możesz po prostu usiąść i edytować.

Oba są konfigurowalne, chociaż dla moich pieniędzy pisanie rozszerzeń w tym samym Lispie, w którym edytor jest napisany, zapewnia płynniejsze doświadczenie. (Emacs, jak zwykle dystrybuowany, nie jest tak naprawdę edytorem. Jest to środowisko Lisp dostosowane do przetwarzania tekstu, z dużą ilością wstępnie napisanego oprogramowania, w tym edytora. Stąd żart „Emacs tworzy przyzwoitą powłokę, ale mógłby użyć lepszy edytor. ”)

Zwykle używam Vima, ponieważ po intensywnym treningu czuję się łatwiej. Może to wynikać z zalet systemu trybu, w którym ogromna liczba poleceń jest dostępna za pomocą jednego palca w pobliżu rzędów domowych lub „syndromu kaczki dziecka”, który dotyczy bardzo redaktorów: gdy nauczysz się dobrego, zazwyczaj trzymasz się do tego.

Nie popełnisz błędu przy użyciu żadnego z nich.


9

Głównym powodem, dla którego nie używam vi / vim, jest to, że jest modalne. Głównym powodem, dla którego używam vi, jest to, że jest dostępna prawie wszędzie.


12
Głównym powodem, dla którego używam vima jest to, że jest modalny. Wyższa krzywa uczenia się, ale o wiele łatwiejsza w użyciu, gdy się do tego przyzwyczaisz.
Kris Jenkins,

1
Warto zauważyć, że jeśli lubisz edycję modalną, Emacs ma dobre wsparcie w trybie zła - emacswiki.org/emacs/Evil
Charles Stewart

9

Zdarza mi się myśleć, że powyższy komentarz „vim is modal” jest niepoprawny. Vim ma polecenia. Możesz zrobić „11a Teraz jest czas dla wszystkich dobrych ludzi…” i skończyć z 11 identycznymi nowymi wierszami tekstu w twoim pliku. To polecenie, a nie tryb. Ale w rzeczywistości istnieje bardzo podstawowa różnica w poleceniach Vima i poleceń Emacsa. Nie jestem do końca pewien, czy potrafię to opisać, ale Eric Fischer zastosował edycję linii w stylu Emacsa w sterowniku TTY 10+ lat temu i opublikował artykuł na ten temat:

http://www.usenix.org/event/usenix99/full_papers/fischer/fischer.pdf

Odkrył, że edycja linii w stylu Emacsa była zasadniczo inna niż w stylu vi.

Tak więc Emacs ma tę zaletę, że wiele innych rzeczy (bash, gnuplot, zsh, ksh kilka innych, o których nie mogę pomyśleć od samego początku), wszystko to kończy się implementacją edycji linii w stylu Emacsa.

Powinienem zauważyć, że osobiście używam Vima przez cały czas. Jestem tylko sporadycznym użytkownikiem Emacsa.


1
set -o vimoim zdaniem w bashlub zshnie jest zbyt trudny do uruchomienia (lub umieszczenia w rcpliku).
moon.musick,

@ moon.musick - na pewno nie, robię to cały czas. Po prostu gnuplotPostgresql psql, MySQL mysqli mnóstwo innych interfejsów domyślnie obsługuje mniej więcej tryb Emacsa. Gdyby tylko Oracle mogła sqlplusedytować wiersz poleceń ... nie, nie. To byłoby zbyt wiele, aby zapytać o to dużą korporację. Mają trendy do naśladowania!
Bruce Ediger,

Tak, najczęściej inputrcrobi to w przypadku narzędzi powłoki, ale potem przez pół sekundy zastanawiam się, dlaczego jnie przewija się w dół, powiedzmy, Mendeley Desktop po przełączeniu się na niego z terminala, i kilkakrotnie proszono ich o powiązania vima. Niestety nie jest w stanie objąć wszystkiego i mieć spójnego środowiska.
moon.musick

2
@BruceEdiger ja wątpię że twórcy mysql(1), psql(1), gnuplot(1), też python(1), perlconsole(1), lftp(1), smbclient(1)i rzeczywiście wiele programów interaktywnych byli zaniepokojeni skróty klawiszowe do edycji wiersza. Wszystkie te programy używają tylko GNU Readline , a domyślny tryb dla GNU Readline jest (co nie dziwi) GNU podobny do Emacsa. set editing-mode vi w twoim ~/.inputrci voila - wszystkie te narzędzia mają skróty klawiszowe vi.
Dmitrij Aleksandrow

9

Ponieważ nie zostało to wyraźnie stwierdzone, dodam, że nie ma lepszego środowiska programowania (Lisp w pudełku, SLIME itp.) Niż nieco zmodyfikowana dystrybucja Emacsa. Wszystkie moje potrzeby programistyczne (99%) są zaspokajane z poziomu Vima, ale dla wszystkich tych bibliotek i procedur Lisp, które piszę, muszę odpalić Emacsa, aby zrobić cokolwiek produktywnego.


8
Czasami zastanawiam się, czy to mówi więcej o Lispie, czy o Emacsie i czy to dobrze, czy źle ...
Kevin Cantu,

8

Używam Vim / gVim.

Kiedyś używałem Emacsa, ale zauważyłem, że gVim działa ogólnie szybciej na wolniejszych komputerach, a ponadto, ze względu na jego wymaganie POSIX, vi jest dostępny prawie wszędzie.

Używając Vima lub gVima, często używam myszy, myślę, że obsługa jest świetna.

Zacząłem używać Emacsa, ponieważ był łatwiejszy w użyciu dla początkującego użytkownika. Uznałem, że użycie nano jest z jakiegoś powodu dość podatne na błędy, aw pewnym momencie zdałem sobie sprawę, że jestem o wiele bardziej wygodny w używaniu vi.

W tej chwili jest to mieszanka. Często używam Eclipse i gedit. Vim jest jednak nadal moim ulubionym i najczęściej używanym edytorem.


7

Używam zarówno gVim, jak i Emacsa wystarczająco dobrze, aby być produktywnym, chociaż nie jestem ekspertem w żadnym z nich. Mogę z całą pewnością powiedzieć, że Vim i gVim działają szybciej na moim laptopie z systemem Windows 7 (z którego muszę korzystać w pracy). Emacs na Windowsie ma dziwny zwyczaj „pauzowania” do minuty i nie reagowania, nawet w dalszym ciągu akceptując klawiaturę, po czym w pośpiechu wyrzuca wszystko zgromadzone w buforze klawiatury. Nie dzieje się tak w systemie Mac OS ani Linux. Niemniej jednak używam Vima lub gVima przez większość czasu na wszystkich platformach, więc nie muszę się zatrzymywać i zastanawiać się, którego edytora używam i dostosowuję. To powiedziawszy, w środowisku czysto * nixowym, prawdopodobnie pozostałbym przy Emacsie, ponieważ uważam, że edytowanie bez modelowania jest nieco bardziej naturalne.

Podsumowując: moim zdaniem oba edytory są wystarczająco potężne, aby obsłużyć wszystkie potrzeby edycji tekstu. Wybór powinien opierać się na względach praktycznych (takich jak specyfika implementacji platformy) i stylu pracy.


3

Główną różnicą między Emacsem a Vimem jest ergonomia. Jak wiesz, istnieje zespół cieśni nadgarstka, CTS. Emacs jest bardzo „niebezpieczny”, jeśli masz CTS i prowokuje CTS. Vim - nie, możesz przeczytać o tej różnicy w wielu miejscach. Na przykład w Vimie możesz edytować tekst tylko jednym palcem. W Emacsie - nie możesz :)


3
Nie udowodniono nawet, że CTS jest rzeczywiście związany z używaniem klawiatury. Choć pozornie prawdopodobne, istnieją linki pokazujące, że CTS jest wywoływany genetycznie bardziej niż cokolwiek innego. Tak więc, może jeszcze pomóc, aby wpisać mniej, gdy masz już CTS, ja nie sądzę, że istnieje jakikolwiek dowód powiedzieć, że jeden redaktor powoduje CTS bardziej niż innym.
Konrad Rudolph

-2

Używam vi/ nvi(NOT vim), ponieważ jest to proste i dyskretne.

vimtak bardzo uwielbia sygnały dźwiękowe, że jest trudniej i nieco nieoczywisto być wyłączonym. Musiałem fizycznie usunąć wewnętrzny głośnik komputera, zanim w końcu znalazłem pochowany-ref o tym, jak to zrobić :)

set vb t_vb=

Nie używam też kolorowania składniowego, dla mnie najpiękniejsza jest szarość nad czernią.

I może jestem zbyt głupi, żeby wymyślić sposób, w jaki zaplątane są klawisze z wieloma klawiszami. emacsJedyną zapamiętaną przeze mnie kombinacją trzech klawiszy jest CTRL-ALT-DEL.


-2

„Jakie są zalety i wady Vima i Emacsa?” - ha!

Przeważnie zostawię profesjonalistów innym.

Wadą obu z nich jest to, że oboje są starymi szkołami. Przez lata korzystałem prawdopodobnie z 50 różnych edytorów, od edytorów Basic, po superszybkie edytory kodowane w montażu (VEDIT dla jednego), po fantazyjne edytory GUI, niektóre lepsze od innych. Napisałem nawet własny specjalny edytor o nazwie ForthStar i dostosowałem go do edycji drzewa liści btrieve, z wieloma indeksami do wydajnego wyszukiwania, na przykład do natychmiastowego wyszukiwania ostatnich liści, które właśnie edytowałem, lub do szybkiego znajdowania składników kodu lub rodziców liści lub dzieci.

Myślę, że zarówno vi, jak i emacs są bardziej religią niż mięśniami. Twórcze umysły, które je zbudowały, przeszły w dużej mierze do przodu, a nowe wsparcie nie ma odwagi i umiejętności, aby je na nowo wynaleźć.

Tak, Emacs może wiele zdziałać, ale spowalnia go seplenienie, piękny i obecnie w dużej mierze przestarzały język.

Oba utknęły w trudnych układach klawiatury. Emacs może nieco dostosować się do użytkownika, rozpoznając, że jest klawisz Alt zamiast antycznej Meta. I podobnie jak WordStar zdają sobie sprawę, że trzymanie CA CB prosto z CA B, gdy szybkie pisanie nie jest warte rozróżnienia. Lepiej po prostu mieć taki, który jest uruchamiany przez jedną z kombinacji klawiszy. Tak, możesz zmieniać przypisania klawiszy, ale co za bałagan masz później.

Vi jest sprytny, ale brakuje mu wydajnego wyszukiwania i zamiany, jak w Notepad ++, który pokazuje, co znaleziono, pozwala go rozwinąć i selektywnie zastosować, w kolorze, aby wspomnieć o jednej innowacji.

Prawie każdy inny GUI ap pozwala obecnie na powiększanie za pomocą kółka myszy. Wygląda na to, że GUI Emacsa nie działa. A gdzie jest takie miłe greckie jak Kate?

Moim ulubionym układem klawiatury na przestrzeni lat był diament kursora Wordstar. Przynajmniej łatwo było się nauczyć i od razu miało sens. Najbardziej nienawidziłem najbardziej WordPerfect, który zwiększał złożoność i wydaje się być oparty na emacach.

Spójrzmy prawdzie w oczy większość świata ma GUI w dzisiejszych czasach. I to się podoba, czy nie, edytory tekstu są trochę utknięte w swoim wieku.

Myślę, że lepiej byłoby mieć uniwersalny edytor, który mógłby łatwo przełączać się między emacsem, vi, wordstar lub dowolnym układem klawiszy i bez utraty mocniejszych poleceń, jakie ma do zaoferowania. Prawdziwi programiści muszą korzystać z różnych narzędzi edycyjnych. Dlaczego nie mieć edytora, który zaspokoi nasze potrzeby, aby wykonać pracę, a nie zmusić nas do robienia rzeczy?


Ponieważ pytanie dotyczy zarówno zalet, jak i wad, nie odpowiada to na pytanie. O ile widzę, wspomina tylko, że inni redaktorzy są lepsi niż zarówno Vi, jak i Emacs.
Kusalananda

Wszelkie odpowiedzi są w porządku dla pytania, dopóki nie odpowiedzą na pytanie i zasadniczo różnią się od poprzednich. "Wygląda ok".
peterh

Q wyraźnie prosi o wady. I wspominam o niektórych zawodowcach.
Widok eliptyczny
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.