To jest era rywalizacji. Rozejrzyjcie się dookoła, a wszędzie zobaczycie święte wojny: iOS vs. Android, Apple vs. Samsung, MCU vs. DC, lista po prostu się ciągnie. Jedną z długotrwałych i najstarszych świętych wojen jest prawdopodobnie „wojna edytorów” między użytkownikami Vima i Emacsa. Ta wojna edytorów trwa, tworząc zamieszanie wśród społeczności programistów i użytkowników Linuksa od dziesięcioleci. Vim i Emacs to bez wątpienia dwa najpopularniejsze edytory kodu Puppet na maszynach uniksowych. Oba są naprawdę dobrymi i wysoce wydajnymi edytorami tekstu używanymi zarówno przez większość wytrawnych użytkowników Linuksa, jak i programistów. Przyjrzyjmy się kilku kluczowym różnicom między nimi.

Czym jest Vim?

Vim jest rozszerzoną wersją edytora tekstu vi używanego w systemach uniksowych. Skrót od visual editor, vi jest standardowym edytorem tekstu znajdującym się w prawie każdym systemie uniksowym i jest najpopularniejszym edytorem tekstu w systemie Linux. Jest on obecny od wczesnych dni Uniksa. Vim to podobny do vi ekranowy edytor tekstu zbudowany w celu umożliwienia efektywnej edycji tekstu. Często nazywany „edytorem programisty”, Vim wykorzystuje proste, oparte na kursorze operacje, dając format pełnoekranowy. Pierwsza wersja Vima została udostępniona publicznie przez Brama Moolenaara w 1991 roku. Od tego czasu ewoluował w jeden z najbardziej popularnych i bogatych w funkcje edytorów. W 1998 roku została wydana piąta generacja Vima, a wraz z nią wprowadzono również jedną z najczęściej używanych funkcji edytora – Scripting. Ludzie mogą teraz pisać własne skrypty dla Vima, co ostatecznie rozszerza jego funkcjonalność.

Czym jest Emacs?

Emacs to rodzina wysoce konfigurowalnych, samodokumentujących się edytorów tekstu czasu rzeczywistego, zaprojektowanych dla systemów operacyjnych POSIX i dostępnych w systemach Linux, macOS, BSD, Windows i innych. Większość użytkowników twierdzi, że Emacs nie jest w rzeczywistości edytorem; w rzeczywistości jest to wysoce rozszerzalny system LISP (List Processor), który zawiera edycję tekstu. Emacs jest dostosowany do tworzenia programów, które umożliwiają formatowanie kodu źródłowego zgodnie z używanym programowaniem. Jest to jeden z najpopularniejszych edytorów tekstu w systemie Linux, który pełni również rolę klienta poczty elektronicznej, zintegrowanego środowiska programistycznego, przeglądarki dokumentów itp. Wersja GNU Emacsa stworzona przez założyciela projektu GNU Richarda Stallmana zawiera klienta poczty wraz z innymi komponentami, takimi jak czytnik wiadomości i edytor. Pierwotnie został napisany jako seria poleceń rozszerzających lub MACroS dla edytora tekstu TECO z końca lat 60.

Różnica między Vimem a Emacsem

Edytor

– Vim jest edytorem tekstu posiadającym trzy ważne tryby: wstawiania, normalny i wizualny. Vim domyślnie uruchamia się w trybie „normalnym” i służy do kontrolowania sesji edycji. W trybie wstawiania twoje naciśnięcia klawiszy stają się częścią dokumentu. Tryb wizualny służy do dokonywania selekcji tekstu. Możesz tworzyć i edytować swoje dokumenty, przełączając się między tymi trybami. Emacs jest również edytorem ekranowym, ale jest czymś więcej niż tylko edytorem tekstu. Jest to wysoce rozszerzalny system LISP (List Processor), który posiada funkcje edycji tekstu. Działa również jako klient poczty elektronicznej, zintegrowane środowisko programistyczne, przeglądarka dokumentów itp.

Łatwość użycia

– Vim jest niezwykle lekki i szybko się ładuje. Ma być szybkim, łatwo dostępnym i niezwykle wszechstronnym edytorem tekstu, który jest preinstalowany w prawie każdym systemie operacyjnym opartym na Uniksie, w tym w większości dystrybucji Linuksa. Jest lepszy niż większość edytorów tekstu. Wszystko, co musisz zrobić, to nauczyć się skrótów klawiszowych i jesteś gotowy do pracy. Emacs jest dostępny na prawie każdym głównym systemie operacyjnym od Linuksa do macOS, BSD, Windows i więcej. Jednak nie jest on preinstalowany i tylko nieliczne dystrybucje Linuksa dostarczają Emacsa z pudełka. Z Emacsem możesz robić prawie wszystko, jak edytować teksty, robić notatki, edytować filmy, mieć dostęp do powłoki, słuchać muzyki, przeglądać strony internetowe i wiele więcej.

Możliwość dostosowania

– Vim jest bardziej zoptymalizowany pod kątem powtórzeń. Jest bardzo wydajny, ponieważ śledzi twoje ostatnie działania i możesz łatwo powtórzyć ostatnią zmianę za pomocą jednego naciśnięcia klawisza. Ale oczywiście musisz nauczyć się sprytnie wykonywać swoje działania. Podobnie jak Vim, Emacs ma bogaty, rozbudowany zestaw poleceń do zmiany tekstu. Ale w Emacsie można w każdej chwili dostosować polecenia, a także zmienić ustawienia, z których większość to zmienne, które można dostosować. Jest to w zasadzie środowisko wykonawcze dla języka programowania LISP, który jest Touring kompletny, dzięki czemu możliwości Emacsa są praktycznie nieograniczone.

Język

– Rdzeń Vima napisany jest w języku C, a jego interfejs użytkownika oparty jest na wieloletnim vi Billa Joya, ale z wieloma nowymi funkcjami. Natomiast wtyczki do Vima są napisane w języku zwanym VimScript, który jest wbudowanym interfejsem pozwalającym programistom na zwiększenie możliwości Vima. Z kolei Emacs jest napisany w podzbiorze języka Lisp zwanym ELisp (dialekt używany w GNU Emacs), co oznacza, że będziesz mógł dostosować każdy szczegół edytora. Lisp ma bardzo minimalną, regularną składnię. Możesz skonfigurować GUI do bardzo granularnego poziomu, nawet sam interfejs.

Podsumowanie

Podobnie jak Vim, Emacs jest również edytorem tekstu, który można uruchomić za pomocą GUI, ale jest to o wiele więcej niż tylko edytor tekstu. W rzeczywistości Emacs działa również jako klient poczty elektronicznej, zintegrowane środowisko programistyczne, przeglądarka dokumentów itp. W przeciwieństwie do Vima, Emacs pozwala używać języka programowania Lisp do pisania nowych poleceń lub zastępowania starych. Ta cecha jest nazywana rozszerzalnością online. Emacs jest również wysoce konfigurowalny, co oznacza, że można dostosować każdy szczegół do bardzo granularnego poziomu, dzięki czemu jego możliwości są praktycznie nieograniczone. Jednak Vim jest nadal jednym z najpopularniejszych i najczęściej używanych edytorów tekstu, który można znaleźć w prawie każdym systemie uniksowym.