Różnice między Emacsem a Vimem


685

Bez wdawania się w religijny spór o to, dlaczego jedno jest lepsze od drugiego, jakie są praktyczne różnice między Emacsem a Vimem? Chcę się nauczyć jednego lub drugiego, ale zdaję sobie sprawę, że krzywa uczenia się dla każdego jest wysoka i nie mogę się zdecydować. Nigdy nie korzystałem z edytora tego typu (zawsze korzystałem z IDE), więc wszystko, co pomaga nowicjuszowi, jest zaletą.


Zanim rozpocznie się wojna z płomieniem: nie pytam, co jest lepsze, pytam o różnice między nimi. Chciałbym obiektywne porównanie.


3
Jeśli używasz komputera Mac (OSX), przekonasz się, że wiele podstawowych poleceń ruchu kursora Emacsa działa prawie wszędzie. (Na przykład działają tutaj, gdzie wpisuję ten komentarz na stronie internetowej.) Tak więc dla użytkowników komputerów Mac nauczenie co najmniej następującego podzestawu emaców ma ogólną zaletę: ^ A ^ B ^ D ^ E ^ F ^ K ^ L ^ N ^ O ^ P ^ T ^ V ^ Y
Matt

2
@JamesAnderson: z mojego doświadczenia wynika, że ​​jest odwrotnie. Używam vima od 2,5 roku, a potem przełączyłem się na emacsa. Ludzie emaców przeważnie nie dbają o… „cokolwiek dla ciebie działa”. Oto, co ,salespitchmówi #emacs<fsbot> We aren't gonna lie. Emacs sucks. Some of us tolerate it, but we can't tell you if YOU'LL be able to. Try it and make up your own mind.
Silex

2
Emacs to zdecydowanie świetny system operacyjny, ale brakuje mu tylko porządnego edytora.
Technical_difficulty

1
@ JimmyM.G.Lim Nie, wykorzystuje bieżący pager w systemie. Jeśli uruchomisz, PAGER=cat manczłowiek wyświetli tekst bezpośrednio na ekranie.
SS Anne

1
domyślam się, że policja „oparta głównie na opiniach” nie istniała, kiedy o to pytano ;-) ah, prościej ... jedno, co powiem to to, że raz czytając książkę o emacsie i wypróbowując ją, pomyślałem była bomba. 3 tygodnie wakacji później odkryłem, że całkowicie zapomniałem o wszystkich naciśnięciach klawiszy. Z drugiej strony vim nie jest tak naprawdę moją rzeczą, ale mogę niezawodnie z nim częściowo korzystać, gdy zajdzie taka potrzeba, używając just i, esc, wq.
JL Peyret

Odpowiedzi:


491

(poniższy tekst jest moim zdaniem, nie powinien być traktowany jako fakt lub zniewaga)

W Emacsie oczekuje się, że będzie on otwarty 24 godziny na dobę, przez 7 dni w tygodniu, i będziesz mógł żyć w programie, stamtąd możesz zrobić prawie wszystko, co możesz zrobić. Piszesz własne rozszerzenia, używasz ich do robienia notatek, organizacji, gier, programowania, dostępu do powłoki, dostępu do plików, słuchania muzyki, przeglądania stron internetowych. Zajmie Ci to tygodnie i tygodnie, zanim będziesz z tego zadowolony, a następnie będziesz się uczyć nowych rzeczy przez cały czas. Będziesz zirytowany, gdy nie będziesz mieć do niego dostępu i będziesz ciągle zmieniać konfigurację. Nie będziesz w stanie łatwo używać wersji emacs innych ludzi i nie będzie po prostu zainstalowany. Używa Lisp, co jest świetne. Możesz zrobić z tego wszystko, co chcesz. (cokolwiek)

Dzięki Vimowi prawie zawsze jest on wstępnie zainstalowany. To jest szybkie. Po otwarciu pliku dokonaj szybkiej edycji, a następnie zamknij. Możesz pracować z podstawową konfiguracją, jeśli jesteś na czyimś komputerze. Nie jest tak edytowalny, ale wciąż jest znacznie lepszy niż większość edytorów tekstu. Rozpoznaje, że przez większość czasu, kiedy czytasz / edytujesz, nie pisze i przyspiesza tę część. Nie cierpisz na emacs pinkie . To nie jest takie irytujące. Łatwiej się uczyć.

Mimo że używam Emacsa przez cały dzień (i uwielbiam to), chyba że zamierzasz spędzać dużo czasu w wybranym przez ciebie programie, wybrałbym vim


154
Nie udostępniaj go: sugeruję umieszczenie plików .emacs i .emacs.d w repozytorium kontroli źródła, więc uzyskanie idealnej konfiguracji Emacsa jest po prostu sprawą kasy.
Duncan Bayne

7
Zarówno emacs, jak i vim mogą cierpieć z powodu tego, co opisano powyżej: oba mogą być skonfigurowane do tego stopnia, że ​​są nierozpoznawalne w porównaniu z ich postaciami waniliowymi. Poza tym popieram użycie vcs.
Alexej Magura

11
Na jakich systemach pracujesz, @Radu? Nigdy nie widziałem prawdziwego systemu w 2010 roku, który miałby prawdziwy vizamiast do niego vimalias.
ELLIOTTCABLE

9
Może Vim jest łatwiejszy do nauczenia się niż Emacs, ale jest niesamowicie zagmatwany przy pierwszym uruchomieniu, jeśli nie masz z nim wcześniejszego doświadczenia! Musiałem użyć google, aby móc go zamknąć, i wciąż musiałem próbować kilka razy, aby to zrobić poprawnie.
HelloGoodbye

9
Nigdy nie lekceważ „wstępnie zainstalowanego” dodatku VIM: jest on prawie zawsze dostępny wszędzie, gdziekolwiek jesteś, i jest użyteczny przy niewielkim / żadnym dostosowaniu. Używam go cały czas, gdy sshwchodzę na inne maszyny. Właśnie dlatego nauczyłem się go najpierw - to, a ponieważ moi przyjaciele znali VIM i mogli mi pomóc. (Nie lekceważ też wsparcia przyjaciół!)
jvriesem

137

Vim nie jest powłoką. I nie komunikuje się dobrze z podprocesami. Jest to prawie zgodne z projektem, podczas gdy w Emacsie elementy te są uwzględnione w projekcie. Oznacza to, że niektóre rzeczy, takie jak osadzanie debuggera lub interpretera (dając rodzaj IDE), są trudne w Vimie.

Ponadto skróty Emacsa są dostępne głównie za pomocą modyfikatorów, i oczywiście interfejs Vima jest znany z modalności, dając dostęp do absurdalnej liczby bezpośrednich klawiszy do manipulacji.

Emacs był jedynym edytorem tych dwóch programów, który był programowalny, i chociaż Vim ma wiele dziwnych poziomów w programowaniu, z dodatkiem powiązań Python i Ruby (i więcej, zapominam), Vim jest również programowalny pod wieloma względami troszczyłbyś się.

Używam Vima i jestem z tego całkiem zadowolony.


6
Mała aktualizacja: Vim obsługuje znacznie lepszą komunikację z podprocesami, ponieważ wersje 8.0 i 8.1 wprowadziły nawet bufory terminali, więc pod tym względem jest trochę bliżej emacsa.
DarkWiiPlayer,

110

Wigor:

  • lepszy jako prosty edytor (mniej kluczy wymaga prostych zadań)
  • bardziej aktywna społeczność skryptowa - język wewnętrzny: vimscript
  • jedno centralne repozytorium skryptów, wtyczek, schematów kolorów, ...
  • również rozszerzalny w python, ruby
  • może być przenośny (emacs ma z tym pewne problemy)

Emacs:

  • domyślnie niemodalny (większość dzisiejszych redaktorów przyjęła to podejście). Chociaż istnieje tryb zła, który naśladuje zachowanie vima.
  • mocniejszy język do jego rozszerzania (elisp jest językiem w pełni rozwiniętym, aw emacs można praktycznie na nowo zdefiniować wszystko; podczas gdy w vimie nie można przedefiniować wbudowanych funkcji edytora. Z drugiej strony, vimscript jest stosunkowo podobny do dzisiejszych dynamicznych języków podczas gdy elisp prawie nic nie przypomina)
  • bardziej rozszerzalny
  • doskonałe wsparcie dla narzędzi GNU (kilka z nich)

Osobiście wolę vim - jest mały, robi to, co powinien, a kiedy chcę mieć pełne IDE, otwieram VS. Podejście Emacsa do bycia edytorem, który chce być IDE (lub powinienem powiedzieć, OS), ale nie do końca, jest IMHO, nieaktualne. W dawnych czasach posiadanie klienta poczty e-mail, klienta ftp, tetris ... co innego w jednym pakiecie (emacs) miało jakiś sens ... w dzisiejszych czasach już nie.

Oba są jednak tematem dyskusji religijnych między programistami i użytkownikami społeczności superużytkowników, i pod tym względem oba są doskonałe do rozpoczęcia wojen z płomieniami, jeśli zostaną z nimi w kontakcie (w tym samym zdaniu / pytaniu).


47
„lepiej jak redaktor” jest dość niejasne. Byłbym zainteresowany zobaczeniem powodów, dla których.
Allen

41
@Allen - co jest niejasne? Rzadko spotykam użytkowników zarówno vima, jak i emacsa, którzy mają problem z tym stwierdzeniem. Nawet hardcorowi użytkownicy emacsa zwykle akceptują to jako fakt. Czy korzystałeś już z obu edytorów? Uważam, że stosunkowo oczywiste jest, że vim ma przewagę pod względem funkcji edycji tekstu.
Wież

36
Jestem niewiarygodny, że ktokolwiek zaakceptowałby to jako fakt. Jako długoletni użytkownik zarówno emacsa, jak i zwykłego VI, użyłem vima kilka razy - ale „lepiej jak edytor” musi przejść do emacsa, jeśli nie z innego powodu niż znacznie szerszy wybór głównych i mniejszych trybów aby pomóc Ci podczas pisania.
Kendall Helmstetter Gelner,

61
Vim jest lepszy jako edytor, ponieważ manipulowanie tekstem wymaga mniejszego ruchu rąk i palców niż emacsa, przynajmniej takie jest moje doświadczenie.
StackedCrooked

7
Ale to na bok, skutecznie vim lepiej nadaje się do edycji: numery linii, tryb wizualny, manipulacja wint1.kaist.ac.kr/files/attach/images/59/450/... . FCOL, miałem problem z uzyskaniem emacsa tylko do przewijania jednej linii na raz.
Wież

52

Jeśli szukasz obiektywnej analizy obu redaktorów, spójrz na ich pochodzenie i filozofię kryjącą się za ich projektami. Zastanów się, który z nich byłby dla Ciebie lepszy i naucz się go (i naucz się go i naucz się, ponieważ potrzeba czasu, zanim odkryjesz jego prawdziwą użyteczność w porównaniu z jakimkolwiek IDE). Wprowadzenie do edytowania wyświetlania za pomocą Vi zostało napisane przez Billa Joya i Marka Hortona i wyjaśnia, dlaczego wybrał projekt modalny i uzasadnienie dla różnych naciśnięć klawiszy (pomaga mi to zapamiętać, że CTRL-W + W (przełączy się na następny W indow i to to samo dla CTRL W + CTRL W, na wypadek, gdybyś przytrzymał klawisz CTRL przez dłuższy czas.

Oto link do osi czasu Emacsa i zawiera odniesienie do papieru Multics Emacs. Oto dokument RMS na temat Emacsa , gdzie widzę, że nacisk kładzie się na programowalny edytor tekstu (jeszcze w 1981 roku i wcześniej).

Nie czytałem gazet emacs, ale kilka razy przeczytałem gazetę Billa Joya. Oba są stare, ale nadal rozumiesz filozofię i możesz użyć obecnego narzędzia (vim 7.x lub emacs 25?)

Edycja: Zapomniałem wspomnieć, że czytanie obu tych artykułów wymaga cierpliwości i wyobraźni, ponieważ zabiera Cię w przeszłość podczas czytania. Ale warto.


43
  1. Vim zawsze był szybszy do uruchomienia niż Emacs. Mówię, że na dowolnej maszynie instalacje Vima będą uruchamiane szybciej niż instalacje Emacsa. I wydaje mi się, że po umiarkowanym dostosowaniu jednego z nich Vim nadal będzie uruchamiał się szybciej niż Emacs.

  2. Potem inną praktyczną różnicą były tryby Emacsa. Ułatwiają Ci życie znacznie łatwiej, edytując XML, C / C ++ / Java / cokolwiek, LaTeX i najpopularniejsze języki, o których możesz pomyśleć. Sprawiają, że chcesz mieć otwarty edytor na długie sesje i pracę.

Podsumowując, powiem, że Vim przyciąga cię do krótkich, szybkich zadań edycyjnych; podczas gdy Emacs zachęca do nurkowania na długie sesje.


1
Nie sądzę, że tryby ułatwiają życie, wręcz przeciwnie. A Larry Tesler myśli tak samo .
Eliran Malka

2
W jaki sposób tryby Emacsa pomagają w kodowaniu? (Jestem nowy w tym ...)
jvriesem,

4
Dawno temu przeszedłem z vi na emacs z czterech powodów: (a) jedno kliknięcie, aby przejść do następnego błędu kompilatora, (b) integracja gdb, (c) grep i find-grep. Czy można teraz robić te rzeczy w vimie?
zzz777

„Uruchamianie Vima zawsze było szybsze niż Emacsa” - jeśli utrzymujesz uruchomiony serwer emacs, tartowanie klienta emacs jest bardzo szybkie. Mam do tego skrypty, które replikuję (używając git) na wszystkich moich komputerach. (Właściwie * również * używam vima; to zawsze zależy od tego, gdzie jestem i jakie jest zadanie)
Jay

„Uruchomienie Vima zawsze było szybsze niż Emacsa” - także, wraz use-packagez :deferopcją, mój Emacs otwiera się prawie natychmiast. Zrezygnowałem nawet z emacsclient.
Jay

37

VI jest zawsze dostępny i będzie działał na najbardziej sparaliżowanym trybie pojedynczego użytkownika, zepsutą grafiką, bez mapy klawiszy, na powolnym komputerze - więc warto wiedzieć, jak edytować w nim proste pliki tylko dla zadań sysadmin.

Emacs to kompletny interfejs użytkownika w edytorze. Chodzi o to, że odpalasz Emacsa podczas uruchamiania maszyny i nigdy jej nie opuszczasz. Możliwe jest obecność tysięcy sesji.

To, czy warto poznać możliwości Emacsa w porównaniu do korzystania z edytora GUI / IDE i używania czegoś takiego jak Python / awk / etc do dodatkowych zadań, zależy od Ciebie.


2
Znam VI tylko z tych powodów - ale w dzisiejszych czasach powiedziałbym, że raczej nie spotkasz systemu UNIX bez co najmniej podstawowej instalacji EMACS, i może sprawić, że słabe środowisko powłoki będzie bardziej tolerowane.
Kendall Helmstetter Gelner,

3
Lub zablokuj busyboksa w initrd i debuguj uszkodzony sterownik pamięci dla urządzenia rozruchowego, tak wcześnie w procesie init, że wszystko, co masz, to początkowy dysk RAM, a jednak nadal masz edytor - vi.
smcameron

2
Po chwili z vi twoje palce znają ruchy - ale nie pamiętasz, jakie są rzeczywiste klawisze!
Martin Beckett,

10
Myślałem, że to było ed„zawsze dostępne i będzie działać na najbardziej sparaliżowanym trybie pojedynczego użytkownika, zepsutą grafiką, bez mapy klawiszy, na powolnym komputerze”. Zaraz, który to rok? (Westchnienie - ednigdy cię nie zapomnę.)
belacqua,

2
@Kendall: Obecny system Ubuntu Linux nie jest dostarczany z zainstalowanym emacsem.
intuicyjnie

25

Jestem pełnoprawnym fanem Emacsa, ale znałem VI na długo zanim poznałem Emacsa. Powiedziałem, że cały mój lud uczy się VI, ponieważ jest on zawsze dostępny wszędzie. Nie mogę się pomylić z żadnym z nich.


2
To też jest moje doświadczenie ... Emacs i uEmacs nigdy nie były dostępne. Moim pierwszym redaktorem był uEmacs (na Amiga), ale odkąd nauczyłem się vima, zbyt wygodne było mieć go przy sobie.
Marius

To w zasadzie moje doświadczenie. Vi jest wszędzie i generalnie instalowany jako domyślny edytor $ EDITOR na systemach uniksowych, więc musisz go znać, jeśli pracujesz z Uniksem. To powiedziawszy, używam emacsa do edycji tekstu każdego dnia i uwielbiam to.
Fergie,

14

Wygląda na to, że odpowiedź została już wybrana, ale duża różnica zawsze była dla mnie modalna vs. niemodalna. Vim jest modalny, co oznacza, że ​​dokonuje optymalizacji w oparciu o określony zestaw trybów użytkowania. Przynajmniej tak zawsze na to patrzyłem. To sprawia, że ​​używanie Vima jest zupełnie innym doświadczeniem, ponieważ zamiast mieć obszar roboczy, w którym wpisujesz kod, naprawdę mówisz środowisku, aby działało na tekście. Dlatego ludzie mówią, że z Vimem naprawdę uczysz się języka. : Wq i: s / foo / bar są częścią środowiska podobnego do powłoki, które edytuje i odczytuje tekst.

Z drugiej strony Emacs jest znacznie bliższy większości edytorów / edytorów tekstu / etc. widzisz dzisiaj. Masz obszar roboczy, który ma wysoce programowalny interfejs. Dlatego widzisz takie rzeczy, jak e-mail, IRC, powłoki itp. Jako programista łatwo jest myśleć w kategoriach „weź numer linii, na której jestem, i zrób coś z informacjami”. Chęć opuszczenia edytora staje się mniejsza, ponieważ zamiast wychodzić, otwierać inną aplikację / język i robić różne rzeczy na tekście, masz Emacsa, w którym możesz robić te rzeczy w ramach swojego edytora.

Te dwie idee niekoniecznie są ze sobą sprzeczne, ale po prostu ujawniają dwa różne cele. Osobiście używam Emacsa, ale widziałem ludzi, którzy naprawdę dobrze znają Vima i mogą szczerze powiedzieć, że nie ma znaczenia, który wybierzesz. Najpierw spróbowałem Vima, ale w końcu Emacs się dla mnie trzymał. Prawdą jest, że bez względu na to, co wybierzesz, powinieneś być przynajmniej trochę biegły w Vimie, ponieważ tak naprawdę jest on zawsze dostępny.


13

Zacząłem od vi, poszedłem do emacsa, a potem do vima. Myślałem o wypróbowaniu Emacsa, aby zobaczyć, co się zmieniło w ciągu ostatnich pięciu lat. (Mówiąc o IDE, przez jakiś czas wpadłem w zaćmienie, ale wolę okno terminala łączące mojego Maca z moim (mężem) Linux-em).

Cięcie i wklejanie ostatnio mnie niepokoi. Wytnij i wklej w Vimie wymaga więcej kroków niż w Emacs, IIRC. Wklejanie od powiedzenia przeglądarki do okna terminala jest irytujące, chyba że zrobisz coś wymyślnego, co nie mam ochoty, więc pogodzę się z tym dziwnym wcięciem. Myślę, że edytowanie wielu plików w emacsie było łatwiejsze. Przynajmniej przeskakiwanie z jednego pliku do drugiego, jeśli oba są wyświetlane na ekranie.

Nie grałem w fantazyjne funkcje vi ani emacsa, ponieważ po prostu lubię zajmować się programowaniem. Potrzebuję tylko ładnych kolorów i właściwej konwersji tabulacji na spację (szczególnie ważne w Pythonie).

Myślę, że wszystko zależy od tego, czy chcesz użyć :wqlub Ctrl-x Ctrl-s(IIRC), aby zapisać plik, jeśli nie obchodzą Cię wymyślne rzeczy.

@mgb było poprawne. Byłem na minimalnym linuksie, aby naprawić coś zaledwie miesiąc lub dwa lata temu w dystrybucji Debiana. vi był jedynym dostępnym edytorem.


1
To wciąż nie jest jedno i zrobione, ale jest o wiele łatwiejsze niż dostosowanie wszystkich ustawień, które psują pasty terminalu. Użyj :set paste, a następnie wklej tekst, a gdy skończysz :set nopaste, wróci do trybu normalnego. Istnieje również :set pastetoggle=<F2>polecenie, które przełącza to za pomocą wybranej kombinacji klawiszy.
hbar

W trybie wcięcia możesz ^R^P+wkleić zawartość ze schowka i zachować bieżące wcięcie. ^R^O+porzuci wcięcie. ^R+wstawi go tak, jakbyś go wpisał. :help i_^R^Ppo więcej informacji.
intuicyjnie

3
Nie mogę sobie wyobrazić, aby wycinanie / wklejanie było łatwiejsze niż yyp. Zobacz także tutaj, aby wycinać i wklejać do iz różnych okien stackoverflow.com/a/8757876/654789
puk

@puk - Ctrl-k (yank) / Ctr-y (put) jest równie łatwy w emacs. W Emacsie masz również wiele rejestrów (az), możesz zapisać tekst lub bieżącą pozycję w ...
Kendall Helmstetter Gelner

3
vim ma również wiele rejestrów
TamaMcGlinn

12

Istnieje ogromna różnica na poziomie z dnia na dzień - Vim (lub dowolny wariant vi) jest z natury modalny (wchodzisz w tryby poleceń, w których nie możesz edytować), a Emacs (wraz z większością innych edytorów) nie są.

Oczywiście, korzystając z menu i takich, nie musisz naprawdę wchodzić w tryb poleceń w Vimie - na początku. Ale wykorzystasz nawet niewielki ułamek mocy Vima. To jest sedno debaty Vim / Emacs.

Osobiście uważam również, że Emacs jest znacznie bardziej rozszerzalny. Możesz znaleźć paczki Elisp dla wielu rzeczy.

Jestem jednak ciekawy, dlaczego zastanawiasz się nad nauczeniem się jednego z nich w bardziej tradycyjnym środowisku IDE. Po co chcesz się uczyć jednego z nich?


8
Chcę tylko nauczyć się, czy jest w stanie poradzić sobie z szumem, szczerze mówiąc. Widziałem, jak elastyczni są oboje, i widziałem, jak eksperci robią w nich całkiem szalone rzeczy i chcę sprawdzić, czy warto się na tym nauczyć. Ponadto moje IDE nie obsługuje Lisp. :)
Sasha Chedygov

3
Hmm Problem polega na tym, że jest tak wiele Emacsa ... ale nadal używam emacsa do pozostawienia IDE, to złożona seria powtarzalnych zadań, które automatyzuję za pomocą rejestrowania makr. Na przykład możesz wziąć bieżące słowo lub wyrażenie, skopiować je do „bufora” (pomyśl, że wytnij / wklej tylko możesz mieć więcej niż jeden), a następnie przejdź do innego pliku, wpisz tekst częściowo wykorzystując skopiowaną wartość, a następnie inny poprzednio skopiowałem również wartość, przesuń kursor, zapisz pozycję i wróć do pierwszego bufora ... a następnie powtórz proces dla następnego wiersza oryginalnego pliku.
Kendall Helmstetter Gelner,

1
Użyłem makr mocno zarówno w vi, jak i Emacsie. Brakuje Ci tego, że Emacs ma znacznie szerszy wybór metod dostępu podczas korzystania z makr, a także tego, że możesz używać buforów cięcia wszędzie - nawet na przykład w środku wyszukiwanych haseł. Powiedz mi, jak napisałbyś makro, które wybrałoby jedno słowo wyrażenia na podstawie wyrażenia regularnego, wziął znaleziony termin, przeszukał inny dokument na tym wyrażeniu, a następnie zastępuje go wokół niego?
Kendall Helmstetter Gelner,

2
@ kendall-helmstetter-gelner - jest to możliwe w vimscript lub w językach, w których vim ma powiązania (jak ruby ​​/ vim / tcl / perl). Masz dostęp do wszystkich funkcji i buforów edytora vima z języków skryptowych.
segy

1
To imponujące, ale aby zrobić to samo w Emacsie, wystarczy użyć naciśnięć klawiszy, które już znam, aby utworzyć złożone makro, zamiast pisać ręcznie. Każdemu, kto zna emacsa, łatwo jest utworzyć makro, które wykonuje to zadanie, ale powiedziałbym, że nie ma zbyt wielu użytkowników VI, którzy mogliby zbudować makro, które opracowaliście bez sporej ilości badań.
Kendall Helmstetter Gelner

11

Jest wiele rzeczy, które zostały powiedziane o obu edytorach, ale mam tylko 5 pensów do dodania. Oba edytory są wspaniałe i nie możesz się pomylić z żadnym z nich.

Jestem użytkownikiem vi / vim od około 15 lat. Próbowałem przekonwertować się na emacsa kilka razy, ale za każdym razem odkrywałem, że vim rzeczywiście może zrobić brakującą rzecz po wyjęciu z pudełka, bez potrzeby pisania rozszerzenia Lisp lub instalowania czegoś.

Dla mnie główna różnica w edytorach polega na tym, że vim zmusza cię do korzystania ze środowiska / systemu operacyjnego, podczas gdy emacs próbuje je zamknąć lub zamienić. Na przykład możesz dodać datę w tekście przez: r! Date in vim lub kalendarz przy pomocy: r! Cal 1 2014, a nawet zastąpić zawartość bufora wersją heksadecymalną. Na przykład. :%! xxd, edytuj hex, a następnie wróć za pomocą:%! xxd -r i wielu innych zastosowań, takich jak wbudowany grep, sed itp.

Innym przykładem jest użycie z jqi gron. Na przykład. wklej bloka json do edytora, a następnie uruchom transformację:

:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u

LUB

:%!jq .path.to.stuff

Każda z powyższych komend potokowych może być uruchamiana osobno przez :%!<command>, gdzie %oznacza cały dokument, ale może być również uruchamiana przy zaznaczeniu, wybranych liniach itp. Tutaj gron outputmoże być użyty jako jqścieżka.

Otrzymasz również funkcję edycji partii EX, np. Zastępując niektóre słowa, ponownie formatując kod, konwertując znaki nowego wiersza dos-> unix, uruchamiaj makro na powiedzmy 100 plików jednocześnie. Można to łatwo zrobić za pomocą ex. Nie jestem pewien, czy emacs ma coś podobnego.

Innymi słowy, IMHO vim zbliża się do filozofii uniksowej. Zasadniczo jest on prostszy i mniejszy, ale jeśli znasz swój system operacyjny i narzędzia, prawdopodobnie nie będziesz potrzebować więcej niż ma to do zaoferowania (VIM). Nigdy nie robię.

Poza tym vi jest standardem defacto w każdym systemie unix / linux, po co uczyć się korzystania z 2 narzędzi, które robią to samo. Oczywiście niektóre systemy oferują mg lub coś podobnego, ale zdecydowanie nie wszystkie z nich. Unix + Vi <3.

Cóż, tylko moje 5 pensów.


8
„Vim zbliża się do filozofii uniksowej”. - Mówisz tutaj o filozofii dotyczącej narzędzi dostępnych z twojej powłoki. Sama powłoka jest jednak dużą aglomeracją wbudowanych, historii, globowania, kontroli procesów, programowalności i tak dalej. Emacs wyraźnie leży w filozofii powłok unixowych: zapewnia wysoce konfigurowalne środowisko, w którym narzędzia mogą być używane razem, i ułatwia użytkownikowi rozszerzanie zestawu narzędzi o własne fragmenty kodu podczas pracy. Myślę, że widzimy, że zarówno emacs, jak i vim są silnie zakorzenione w tradycji unixowej.
Matt

1
Dzięki za komentarz. W żadnym wypadku nie miałem zamiaru rozpoczynać wojny edytorskiej ani obrażać użytkowników emacsa . Po prostu uważam, że łatwiejsze i bardziej przenośne jest wywoływanie rzeczywistych poleceń z powłoki (lub z edytora), w przeciwieństwie do pisania skomplikowanych rozszerzeń w celu hermetyzacji funkcji w emacsie , co z czasem powoduje rozdęcie środowiska. Rozszerzenia te zależą jednak od preferencji użytkownika i można je wykonać, ale w żadnym wypadku nie są egzekwowane przez żadnego z redaktorów. Więc zgódź się z tobą odnośnie emacs i vi (m) miejsca w tradycji UNIX.
Alex

1
Żeby kontynuować wojnę, mam nadzieję, że było jasne, że nie zgadzam się z twoją analogią „vim jest bardziej jak narzędzie uniksowe”. Po prostu przyszło mi do głowy, że tę intuicję można rozszerzyć o „a emacs przypomina bardziej powłokę unixową”. :-)
Matt

@Matt: Podoba mi się ta analogia. Zgadzam się. ;)
Alex

2
Możesz zrobić wszystko, o czym wspomniałeś, i wiele więcej, w emacs (tryb hexl na przykład przechodzi do edycji pliku w formacie heksadecymalnym z podglądem ascii z boku). Znam też całkiem dobrze VI, ale tworzenie makr jest o wiele łatwiejsze i bardziej elastyczne w Emacsie i może po prostu zrobić znacznie więcej niż nawet najbardziej nowoczesne implementacje VIM. To powód, aby to wiedzieć, ponieważ emacs jest w większości miejsc i może zaoferować prawdziwy wzrost edycji tekstu.
Kendall Helmstetter Gelner

10

Dla mnie zaletami emacsa są

  • Tryb tramp pozwala na edycję zdalnych plików przez ssh. tak jak lokalne pliki.
  • tryb tramp + dired = w pełni funkcjonalny klient sftp
  • wsparcie dla każdego języka, którego kiedykolwiek będziesz potrzebować.
  • wbudowany emulator terminala (tryb term), dzięki czemu mogę kontynuować kodowanie bez przełączania między aplikacjami.
  • rozszerzalność wszystko, czego nie lubisz, możesz zmienić za pomocą lisp.

11
FWIW: vim ma pierwsze 3 (choć pod różnymi nazwami. „Tryb trampowy” to „vrr” w vimie). # 4 jest ogólnie uważany przez użytkowników vima za błąd, a nie funkcję. # 5 jest prawdą w vimie, jeśli zastąpisz „elisp” (najgorszy dialekt lisp, jak mówią moi kochający Emacsa) python / mzscheme / perl / ruby ​​/ tcl / vimscript.
Laurence Gonsalves

3
czy możesz skomentować, dlaczego błąd # 4 jest błędem?
Hamza Yerlikaya

2
Sprawdź dodatek Conque dla osadzonej powłoki w vimie.
intuicyjnie

9

Dla mnie emacs ma lepsze narzędzia programistyczne (nie tylko narzędzia oparte na tagach).


9

Chciałbym umieścić tutaj cytat z książki „The Art of UNIX Programming”:

Wiele osób, które regularnie używają zarówno vi, jak i Emacsa, zwykle używa ich do różnych rzeczy i uważa, że ​​warto wiedzieć jedno i drugie.

Ogólnie rzecz biorąc, vi jest najlepszy do małych zadań - szybkie odpowiedzi na pocztę, proste poprawki w konfiguracji systemu i tym podobne. Jest to szczególnie przydatne, gdy używasz nowego systemu (lub zdalnego przez sieć) i nie masz pod ręką plików dostosowywania Emacsa.

Emacs sprawdza się w przypadku długich sesji edycji, w których musisz obsługiwać złożone zadania, modyfikować wiele plików i korzystać z wyników innych programów podczas sesji. Dla programistów używających X na swojej konsoli (co jest typowe dla współczesnych Uniksów), normalne jest uruchamianie Emacsa krótko po czasie logowania w dużym oknie i pozostawienie go uruchomionego na zawsze, być może odwiedzając dziesiątki plików, a nawet uruchamiając programy w wielu oknach Emacsa.

To, co naprawdę chcę tutaj podkreślić, to: „ Wiele osób uważa, że ​​warto wiedzieć jedno i drugie .”


To jest prawdopodobnie przestarzałe. Myślę, że w tamtych czasach wbudowana w Emacsa możliwość korzystania z przeglądarki, SSH, odtwarzacza muzycznego i wolnych systemów, które przestały uruchamiać inne aplikacje, sprawiły, że uwierzyłem, że lepiej jest otworzyć jedną aplikację i pozostać przy niej?
Nishant

Dobra wiadomość: nie jest przestarzała! Możesz używać przeglądarki, odtwarzacza muzyki itp. Poza Emacsem, ale to, co naprawdę przynosi Emacs, to ten sam dobry interfejs do wszystkich tych funkcji i jeden sposób (Elisp) na ich rozszerzenie.
Andrij Tychonow

Według mnie perspektywa TAUP dotycząca Emacsa jest przestarzała, ponieważ w tamtych czasach Emacs miał tę zaletę, że była to jedna aplikacja działająca na raz, która mogła wykonywać wiele rzeczy naraz - na przykład IRC, muzykę, zdalną edycję itp. Jednak dzisiaj masz doskonałe aplikacje do każdego z tych celów, a pamięć nie jest problemem, jak wcześniej ... Wyobraź sobie czytanie Gmaila w Emacsie - Mam na myśli, że interfejs Gmaila ma naprawdę niesamowite wbudowane skróty klawiszowe, dostosowując to do klienta poczty Emacsa zajmuje dużo czasu i może nie być tak dobry, jak oryginalny interfejs Gmaila itp.
Nishant

To nie jest przestarzałe! :)
Andrij Tychonow

> Jednak dzisiaj masz doskonałe aplikacje do każdego z tych celów Tak, ale masz wszystkie te aplikacje z bardzo różnymi interfejsami, konfiguracjami, wrażeniami użytkownika itp. Itd. Itd. Ale Emacs to jedno narzędzie! Na przykład bardzo lubię powiązania klawiszy Emacsa, używam ich w powłoce w przeglądarce. I bardzo dobrze, że przynajmniej niektóre rzeczy są takie same w aplikacjach ...
Andrij Tychonow

9

Korzyści z Emacsa

  • Emacs ma zarówno interfejs niemodalny (domyślnie), jak i modalny (np. Może emulować vim i vi poprzez Evil, Viper lub Vimpulse).

  • Jeden z najczęściej przenoszonych programów komputerowych. Działa w trybie tekstowym i pod graficznymi interfejsami użytkownika na wielu różnych systemach operacyjnych, w tym na większości systemów uniksopodobnych (Linux, różne BSD, Solaris, AIX, IRIX, macOSetc.), MS-DOS, Microsoft Windows, AmigaOS, i OpenVMS. Systemy uniksowe, zarówno bezpłatne, jak i zastrzeżone, często dostarczają Emacsa w pakiecie z systemem operacyjnym.

  • Architektura serwera Emacs pozwala wielu klientom łączyć się z tą samą instancją Emacsa i współdzielić listę buforów, zabić pierścień, cofnąć historię i inny stan.

  • Wszechstronny system pomocy online z skrótami klawiszowymi, funkcjami i poleceniami udokumentowanymi w locie.

  • Rozszerzalny i konfigurowalny wariant języka programowania Lisp (Emacs Lisp) z funkcjami, które obejmują:

  • Potężny i rozszerzalny menedżer plików (dired), zintegrowany debugger oraz duży zestaw narzędzi programistycznych i innych.

  • Każda komenda może być funkcją Emacs Lisp, która umożliwia komendom DWIM (Rób co mam na myśli) programowe reagowanie na wcześniejsze działania i stan dokumentu. Na przykład polecenie przełączania lub podziału okna może przełączyć się do innego okna, jeśli istnieje, lub utworzyć je, jeśli to konieczne. Zmniejsza to liczbę naciśnięć klawiszy i poleceń, które użytkownik musi zapamiętać.

  • „System operacyjny w systemie operacyjnym”. Emacs Lisp umożliwia programowanie Emacsa daleko poza funkcjami edycji. Nawet instalacja podstawowa zawiera kilkadziesiąt aplikacji, w tym dwie przeglądarki internetowe, czytniki wiadomości, kilku agentów pocztowych, czterech klientów IRC, wersję ELIZA i różne gry. Wszystkie te aplikacje są dostępne wszędzie tam, gdzie działa Emacs, z tym samym interfejsem użytkownika i tą samą funkcjonalnością. Począwszy od wersji 24, Emacs zawiera menedżera pakietów, który ułatwia instalowanie dodatkowych aplikacji, w tym alternatywnych przeglądarek internetowych, EMMS (Emacs Multimedia System) i innych. Dostępne są również liczne pakiety do programowania, w tym niektóre ukierunkowane na określone kombinacje języka / biblioteki lub style kodowania.

Korzyści z edytorów podobnych do vi

  • Polecenia edycji można komponować
  • Vi ma interfejs modalny (który Emacs może emulować)
  • Historycznie vi ładuje się szybciej niż Emacs.
  • Choć głęboko związany z tradycją UNIX, działa na wszystkich systemach, które mogą implementować standardową bibliotekę C, w tym UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD i zgodny z POSIX systemy.
  • Rozszerzalne i konfigurowalne za pomocą skryptu Vim lub interfejsów API dla interpretowanych języków, takich jak Python, Ruby, Perl i Lua
  • Wszechobecny. Zasadniczo wszystkie systemy uniksowe i podobne do systemu uniksowego są wyposażone we wbudowaną funkcję vi (lub wariant). Vi (i ex, ale nie vim) jest określony w standardzie POSIX.
  • Systemowe środowiska ratunkowe, systemy osadzone (zwłaszcza te z busybox) i inne ograniczone środowiska często zawierają vi, ale nie emacs.

Źródło: https://en.wikipedia.org/wiki/Editor_war


7

Teraz nie musisz nawet myśleć o różnicy między nimi ze względu na Spacemacs . Jest to dystrybucja Emacsa oparta na społeczności.

Jak już powiedziano

Najlepszym redaktorem nie jest ani Emacs, ani vim, It's Emacs and Vim.

Spacemacs łączy w sobie to, co najlepsze z Emacsa i Vima, co znacznie ułatwia życie i pracę.

Zobacz zrzut ekranu poniżej,


(źródło: spacemacs.org )


3
To oszustwo ... To emacs z pewnymi funkowymi konfiguracjami;) Właściwie to całkiem sporo konfiguracji
Alex

2
To jest świetne - kiedy to działa. Kiedy tak się nie dzieje - jeśli nie znasz już elisp i emacs lub nie możesz znaleźć głównych współpracowników na czacie gitter - zazwyczaj utkniesz i nie masz szczęścia. (czasami usunięcie katalogu melpa w .emacs może to naprawić ...)
Aaron Hall

1
Chociaż zawiera o wiele więcej rzeczy, niż potrzebuję, jestem bardzo zadowolony z Spacemacs. Mam swoje pliki dot na githubie, więc mogę łatwo / szybko konfigurować nowe maszyny, a ponieważ używam zła (vim skróty klawiszowe), mam wystarczające umiejętności, aby sobie radzić, gdy muszę pracować na komputerach, na których nie mogę zainstalować konfiguracji spacemac.
anr78

6

Największą różnicą dla mnie przy wyborze emacsa zamiast vima była wbudowana obsługa gdb w emacsie. Vim nie ma tego w domyślnej dystrybucji, a projekt integracji gdb i vim był prawie niemożliwy do rozpoczęcia pracy z MacVimem


1
Użyłem Vima do edycji i Xcode do debugowania, jest mniej niż idealny, ale wykonalny ..
StackedCrooked 16.09.09

4

To jak jabłka i pomarańcze. Oba mają różne wzornictwo i filozofię. Vim jest edytorem tekstu, a Emacs to interpreter Lisp, który wykonuje edycję tekstu.

Używam Vima, ponieważ jest szybki, elegancki i naprawdę dobry w manipulowaniu tekstami. Składa się z naturalnego, wiążącego się klucza, który może sprawić, że Twoje zadania programistyczne będą naprawdę harmonijne. Vim opiera się na prostej filozofii * nix polegającej na robieniu jednej rzeczy naprawdę dobrze - tj. Manipulacji tekstem.

Rozszerzanie Vima przy użyciu bash / zsh i tmux jest zwykle łatwe i pozwala nauczyć się wielu rzeczy. IMHO to dobra krzywa uczenia się. Najważniejsze jest, aby nauczyć się integrować te rzeczy, aby uzyskać większą działającą aplikację. W Vimie musisz nauczyć się integracji, ponieważ nie integruje się ona naturalnie, chyba że powiesz, jak to zrobić. Innym wartym uwagi rozszerzeniem, którego używam, jest Tig. To nakładka Git oparta na ncurses. Mam tylko powiązanie, które otwiera Tig po cichu, a potem robię tam wszystkie rzeczy z Git.

To użytkownik końcowy decyduje, co działa najlepiej. To, że Emacs i Vim przetrwali próbę czasu, jest dowodem ich godności. W końcu dobry programista potrzebuje jedynie długopisu i papieru, aby być kreatywnym. Dobre algorytmy nie potrzebują edytorów do ich obsługi. Wypróbuj je oba i przekonaj się, co zwiększa produktywność. Naucz się wzorców projektowych z obu tych programów, ponieważ jest wiele do nauczenia się i odkrycia!



3

Emacs to tak naprawdę program do robienia wszystkiego , a vi (m) to tak naprawdę tylko edytor. Jeśli edytujesz tekst, oba są w porządku, ale wolę emacs, po prostu dlatego, że muszę przesunąć jeden z wiersza głównego, aby się poruszać, i nadal wpisywać niewłaściwe rzeczy w trybie poleceń. Jeśli nie masz tego problemu, vi (m) może być dla ciebie edytorem.


2

Żółtawy punkt widzenia:

vi (nie vim) jest koniecznością zawodową. Zawsze masz jakąś formę vi łatwo dostępną, bez względu na środowisko. Możesz być w vi, gdy jesteś w emacsie, możesz być w vi, aby budować komendy bash w unix-land.

Nawet Microsquish musi wspierać vi (choć dobrze sobie z tym radzi, ukrywając go) z powodu rządowej i korporacyjnej zgodności z opublikowanymi standardami.

Moim zdaniem, jeśli wykonujesz praktyczną pracę w zatłoczonym środowisku - a nie kwiat szklarni ograniczonej do jednej fantazyjnej platformy w środowisku programistycznym lub w środowisku akademickim - wiedza o fantazyjnym edytorze jest utrudnieniem. Nie ucz się wszystkich fantazyjnych sztuczek w vimie lub emacsie i nie rozwijaj wielu makr, aby środowisko edytorskie zgięło się do twojej woli. To ogromne pochłanianie czasu, które przeszkadza w pracy z różnymi maszynami, których prawdopodobnie nie można usprawiedliwić w środowisku fabrycznym.

Przeczytaj artykuł Billa Joya - jest to bardzo kompetentne, być może nawet piękne, inżynierskie ćwiczenie w bardzo szybkim edytowaniu zwykłego tekstu. Obowiązuje tutaj zasada Parito: 80% owoców znajduje się w 20% koszy. Bardzo szybkie edytowanie zwykłego tekstu jest podstawą kompetencji edytorskich - wszystko inne jest opcjonalne - a czasem bolesne.


3
O jakim papierze mówisz? Czy możesz przynajmniej podać nazwę, jeśli nie link?
darkfeline

2
„Nawet stwardnienie rozsiane musi wspierać vi.” Możesz to zrobić?
dodgethesteamroller

1

Jeśli często przemieszczasz się z miejsca na miejsce lub Twoja praca wymaga zalogowania się do systemów produkcyjnych, vim jest właściwą drogą.

Wszystkie maszyny * nix będą miały domyślnie zainstalowane vi.

Większość sysdaminów woli ksh jako domyślną powłokę. ksh używa klawiszy poleceń vi (lub emacs) do przeszukiwania historii i edycji wiersza poleceń.

Jeśli nie znasz dobrze vi, jesteś poważnie upośledzony, gdy logujesz się do skrzynki unixowej ze standardową konfiguracją.

Tylko z tego powodu polecam vim jako zwykły edytor na co dzień. Widziałem, jak fani emacsa rozdzierają włosy, próbując zmienić pliki konfiguracyjne na gołym serwerze Unix.


1
Dla bash spróbuj użyć set -o viw swoim .bashrc, zamiast set -o emacs, który jest używany domyślnie. Nigdy nie korzystałem z ksh, ale może być tak samo.
sjas

1

W swoim pytaniu nie wspomniałeś, że chcesz, aby programował w Lisp! Ale kiedy komentujesz swoje odpowiedzi, zrozumiałem, że tak naprawdę potrzebujesz interfejsu programistycznego LISP.

Aby wykonać to precyzyjne zadanie, po prostu zapomnij o Vi. Integracja Emacsa z LISP jest cudowna! Powinieneś użyć SLIME. Będziesz wtedy miał wspaniałą integrację z REPL, będąc w stanie evalobsługiwać funkcje, bufory lub pliki bezpośrednio do działającego interpretera w buforze emacsa i wiele więcej ...


1
Tak, jestem tego świadomy, ale szukanie porządnego edytora Lisp nie było moim powodem do zadawania tego pytania - to był tylko przykład. Dzięki za odpowiedź!
Sasha Chedygov

1

Pracuję z kosmicznymi komputerami kosmicznymi od około 2 lat i neovim od około roku w środowisku produkcyjnym / badawczym. Spacemacs to emacs z kilkoma ładnymi dodatkowymi funkcjami, takimi jak warstwy itp. A neovim to znów vim z kilkoma dodatkowymi funkcjami.

Jestem całkiem niezadowolony z nich obu pod względem doświadczenia. Nadal szukam długoterminowego rozwiązania dla moich potrzeb edycji tekstu.

Oto proste porównanie:

  • Neovim, vim, emacs, spacemacs itp. Wszystkie te edytory zużywają mniej zasobów niż większość edytorów.

  • Neovim / vim jest nieco szybszy niż emacs, zauważalnie szybszy niż kosmiczny.

  • Pod względem doświadczenia edycyjnego. Mogę z łatwością powiedzieć, że pakiety emacsa są lepsze. Myślę, że to dlatego, że lepiej komponują się z rdzeniem emacsa.

  • Vimscript jest fajny i na pewno są też świetne projekty w ekosystemie vim. Dobrą rzeczą jest to, że są lepiej udokumentowane niż większość projektów emacsa, które widziałem do tej pory.

  • Oba mogą być usterkowe w zależności od używanego pakietu. Spacemac mają tendencję do zawieszania się, a neovim mają tendencję do wyświetlania przerażających komunikatów o błędach, więc wybierz tam swoją truciznę.

  • Edycja modalna w vimie nie jest intuicyjną koncepcją, ale gdy już się przyzwyczaisz, chcesz ją gdziekolwiek. Oba edytory to zapewniają.


1
„Edycja modalna (...) kiedy już się przyzwyczaisz, chcesz gdziekolwiek” - to interesujące. Spędziłem lata, używając Emacsa w trybie zła, i zwykłem edytować modalnie, a teraz wróciłem do niemodalnego ... Po prostu czuje się lepiej. Myślę, że zależy to nie tylko od osoby, ale także od kontekstu / czasu w życiu / cokolwiek innego. Smak, jak sądzę. :)
Jay

1
@Jay Chyba, ale nie tęsknisz za takimi rzeczami jak wybór kolumn i przeskakiwanie z „: XX”?
Kaan E.

Nie bardzo ... Czasami używam wyboru prostokąta Emacsa, a zamiast: xx Robię „Mg g XX” - kilka kolejnych naciśnięć klawiszy, ale rzadko muszę iść prosto do linii. Zwykle aplikacja Emacsa (debugger itp.) Wyśle mnie do właściwej linii.
Jay

0

Wykonanie naciśnięcia klawisza ::: vi edycja zachowuje każdą permutację wpisywanych klawiszy. To tworzy ścieżkę w drzewie decyzyjnym, która jednoznacznie identyfikuje dowolne polecenie, podczas gdy polecenia Emacsa są kombinacją klawiszy wpisywanych natychmiastowo, co pozostawia użytkownikowi wybór, czy użyć polecenia.

Zużycie pamięci i możliwość dostosowania ::: vi to mniejszy i szybszy program, z bardziej ograniczoną możliwością dostosowywania, podczas gdy Emacs uruchamia się dłużej i wymaga więcej pamięci. Jest jednak wysoce konfigurowalny i zawiera wiele funkcji, ponieważ jest to zasadniczo środowisko wykonawcze dla programu Lisp przeznaczonego do edycji tekstu.


0

vim to przydatny edytor, wystarczy wpisać vim filenameplik, edytować, zapisać i zamknąć.

emacs to „system operacyjny”, który udaje edytora, możesz evalkodować, aby zmieniać jego zachowanie i rozszerzać go tak, jak chcesz. modeOtrzymywać / wyślij e-mail na emacs jest jak oprogramowanie e-mail od systemu operacyjnego.

Podczas prostej edycji, na przykład modyfikacji pliku konfiguracyjnego, używam vim .

W przeciwnym razie nigdy nie zostawiam emacsa .


0

Myślę, że główną różnicą jest cel projektu. VIM jest przeznaczony dla systemu UNIX jako działający edytor. Emacs jest przeznaczony dla hakerów GNU i lisp, więc ma jakiś mieszany element projektu.

Używam vima na mojej stacji roboczej, podczas gdy ja też kocham emacsa.


0

Jestem fanem Emacsa, ale zachęcam innych programistów do nauki VI, ponieważ:

  1. możesz użyć VI do edycji plików makac Emacsa.
  2. VI zawiera polecenia ed i każdy użytkownik UNIX powinien znać ed i sed.

Zauważyłem kilka komentarzy na temat uruchamiania VIM szybciej niż emacs. Jeśli naprawdę Ci na tym zależy, uruchom emacsa w trybie serwera i alias „emacs” na „emacsclient”. Klient jest super szybki, ponieważ wystarczy dotknąć serwera na ramieniu i powiedzieć mu, który plik chcesz edytować. W systemie MacOSX emacsclient ma tylko 33 KB, podczas gdy emacs to 287 mln.

Nie jestem pewien, czy to wszystko jest konieczne na nowoczesnym sprzęcie. Na moim MacBooku Pro (Retina 2013) emacs ładuje się niemal natychmiast po uruchomieniu go z powłoki. Nie wykrywam żadnej przerwy. Kiedy uruchamiam Emacs.app (wersja GUI), może to potrwać 3 sekundy.

Większość skarg, które słyszę o emacsach, wydaje się pochodzić od osób źle poinformowanych o emacach. Korzystając zarówno z vi, jak i emacsa od 1982 roku, zdecydowanie pamiętam czas, w którym emacs ładował się znacznie wolniej niż vi i zużywał większość pamięci fizycznej w moich wczesnych urządzeniach z systemem UNIX, ale tak już nie jest i nie było to przez co najmniej 15- 20 lat.

Jedna skarga, którą przyznam, to „emacs pinkie”. To nigdy mnie nie martwiło, kiedy byłem młodszy. Teraz, gdy mam 58 lat, moja mała szpilka robi się trochę obolała od wielokrotnego uzyskiwania dostępu do klawisza Control do nagrywania emacsa. Jest to szczególnie prawdziwe na klawiaturze MacBook Pro, w której Control jest przesuwany o jedną pozycję w prawo, aby zrobić miejsce na klawisz „fn”. To nie jest tak denerwujące, gdy Control jest lewym dolnym klawiszem.


Możesz także „zrzucić” emacsa, co w zasadzie oznacza zrobienie migawki skompilowanych rozszerzeń elisp, których potrzebujesz. Emacs uruchamia się w ten sposób znacznie szybciej, ale zajmuje trochę czasu, aby określić, które rozszerzenia chcesz uwzględnić.
Phil Harbison

Dodatkowo możesz grać w „Towers Of Hanoi” w emacs. Jakie to jest świetne? :)
Phil Harbison

Re: „emacs pinkie”. Na niektórych starszych klawiaturach, np. Sun Type 3/4, na których opiera się HHKB Professional, sterowanie umieszcza się tam, gdzie zwykle znajduje się Caps Lock. Nie mam doświadczenia emacsa, które posiadasz, ale bardzo szybko przyzwyczaiłem się do posiadania Kontroli w głównym rzędzie. Tak bardzo, że dokonałem tej zmiany na wszystkich moich klawiaturach (także MacBook Pro). HHKB ma kilka dalszych ulepszeń, np. Backspace tuż nad Enter i Esc obok 1.
martinweiss

@PhilHarbison może rozwinąć się na temat „zrzutu”?
A_P

0

Najpierw byłem użytkownikiem vima, potem przełączyłem się na emacsa, potem na vima, teraz znów eksperymentuję z emacsem.

  • Oba są świetnymi redaktorami.
  • Oba są dziś bardzo rozszerzalne
  • Oba mają świetne wtyczki i społeczność

Jako programiści dużo piszemy, a wreszcie dla mnie poruszanie się w buforach i plikach to największe powtarzalne zadania, więc chcę edytora, w którym MOGĘ SZYBKO SZYBKO!

Motywacją do ponownego eksperymentowania z emacsem jest to, że wpadłem na to, że Ctrl prowadził skróty klawiszowe szybciej niż vim i łatwiej było o tym myśleć.

W vim masz tryby, masz tryb wstawiania, tryb wizualny, tryb normalny, co dzieje się, gdy coś naciskasz, zależy od trybu, w jakim jesteś, jest stanowym podejściem do edycji. Poruszasz się, wchodzisz w tryb wstawiania, edytujesz, wychodzisz z trybu wstawiania i przenosisz ponownie. Często gubię się, jeśli brakuje mi prasy ESC lub czegoś takiego.

W emacsie nie ma trybu, w zasadzie naciskasz klawisz Ctrl za pomocą różu i wpisujesz naciśnięcie klawisza, np. Cx Cf, Cx Cs, Cx Cc. Są skróty klawiszowe, w których musisz zwolnić klawisz Ctrl, nienawidzę tych i zawsze zastępuję je tymi z wciśniętym klawiszem Control.

Myślę, że podejście emacsa jest szybsze w myśleniu i pisaniu, ale vim ma jeszcze jedną siłę. Jego polecenia można komponować, zwykle mają format. Na przykład, aby usunąć wiersz, którego możesz użyć dd, aby usunąć słowo dw. Wtyczki korzystają z tej funkcji, dzięki wtyczce vim-surround możesz usuwać cytaty za pomocą ds „(delete surround”), usuwać do następnego / dt/. Usuń do poprzedniego /: dT/i tak dalej. Tak długo, jak się uczysz, ruchome rzeczy stają się bardzo interesujące.

Podsumowując, dzisiaj pomyślałem, że skróty klawiszowe emacsa są szybsze do edycji makr, a polecenia vim są bardziej wydajne do mikroedytacji

Używam vima przez ostatnie pięć lat, więc edytuję myślenie głównie o słowach, liniach, otaczaniu, blokach itp. Usuń tę linię, usuń cytaty, zamień cytaty, usuń słowo w kursorze, próbuję znaleźć emacsa porusza się w tym celu

Na koniec chciałbym powiedzieć, że bardziej zależy mi na fzf niż na emacsie lub vimie, chciałbym mieć edytor całkowicie oparty na fzf


-9

Po pierwsze Vi (oryginalna realizacja) nie jest dziś używane. Mówisz, że to jakaś pochodna Vima.

Aby rozszerzyć funkcjonalność Vima, musisz ponownie skompilować Vima, a nie Emacsa.

Emacs ma Vima we własnym (tryb vipera).

Emacsy zwykle wymagają ręcznej instalacji, Vim zazwyczaj jest wstępnie instalowany na wszystkich systemach operacyjnych takich jak Unix (ale jeśli masz dostęp ssh do hosta w trybie trampowym, wygrywaj Vima :).

Jeśli wypróbujesz Vima, nie znosisz Emacsa, więc zacznij od Emacsa.

Przeczytaj także http://www.dina.dk/~abraham/religion/vi-tutorial.html (link do dołu, więc użyj tego )

Wyszukiwanie anwer w hxxp: //en.wikipedia.org/wiki/Editor_war


8
Nie musisz rekompilować vima, aby go rozszerzyć. Nie musisz nawet rezygnować z Vima.
za dużo php

1
Czy vimscript / Python / Ruby / etc ma dostęp do wszystkich wewnętrznych struktur Vima? Czy baza kodów edytora pomaga rozszerzyć lub skomplikować rozszerzenie na jednym poziomie złożoności EDYTORA?
gavenkoa

1
Wiele skryptów Vima, takich jak intelektualne MAKRO. Aby przedłużyć Vima trzeba wtyczek ((
gavenkoa

1
Vi nie jest używany?!?! Co? Czy nvi jest uważane za oryginalne? A może „tradycyjny vi”? Wiele systemów, takich jak FreeBSD, ArchLinix, łączy tradycyjne vi lub nvi i jestem za to wdzięczny. Niektóre systemy, takie jak Debian, działają z vimem, który jest domyślnie w trybie kompatybilnym (wydaje się prawie jak tradycyjny vi)
Alex

1
@gavenkoa, absolutnie zgadzam się z Alexem, oczywiście nigdy nie próbowałeś systemu wymagającego ręcznej instalacji, takiego jak Gentoo, niektóre BSD lub Arch Linux. Ponadto: „Jeśli spróbujesz Vima, nie znosisz Emacsa, więc zacznij od Emacsa.” kazałbym najpierw wypróbować VIM, a ty też, jeśli trochę się zastanowisz. To przypomina mi ludzi, którzy mówią, aby nie próbować najpierw programowania funkcjonalnego. Przykro mi, że nie próbowałem tego wcześniej ...
JMCF125,
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.