Blog (15)
Komentarze (236)
Recenzje (0)

O tym, jak vimiarz przeszedł na Emacsa

@VifonO tym, jak vimiarz przeszedł na Emacsa21.06.2011 22:54

W poprzednim wpisie wspominałem, że będzie jeszcze coś o Emacsie. No to jest. Dość niespodziewany zwrot akcji, nawet dla mnie.

Myśl o poznaniu Emacsa chodziła mi po głowie już od wielu miesięcy. Jakieś podstawy znałem, ale niewiele ponad to. Co mnie skłoniło do przejścia do "obozu wroga" i jakie są moje przemyślenia?

Potrzeba rozwoju

Wiem, że brzmi to jak jakiś nonsens, ale jednym z moich większych problemów stała się przesadna znajomość Vima. Oczywiście nie wiem WSZYSTKIEGO, ale coraz rzadziej odkrywałem w nim coś nowego. Czułem, że potrzebuję nowego wyzwania. Jak się potem okazało, to wyzwanie mnie przytrzymało na dłużej.

Interakcja z zewnętrznymi procesami

Jedną z największych bolączek Vima jest brak możliwości interakcji z zewnętrznymi procesami bez dużego kombinowania. Najbardziej widać to, gdy trzeba debuggować jakiś program. Niby jest projekt Clewn, ale nigdy nie udało mi się go zmusić do działania. W Emacsie po prostu włączam M-x gdb i debugguję jakby nigdy nic. Jak jeszcze dodam potem M-x gdb-many-windows, to zaczynam się zastanawiać po co są nakładki w stylu ddd (które mi jakoś w ogóle nie podchodzi). Przyznam się, że większą przygodę z Emacsem zacząłem właśnie od debuggowania. Najpierw szukałem błędów Emacsem, a naprawiałem Vimem, potem już mi się nie chciało skakać po oknach i naprawiałem już w Emacsie, a na końcu prewencyjnie włączałem Emacsa "bo może będę debuggował".

Wewnętrzny język skryptowy

Na początku wyjaśnijmy sobie jedną rzecz. Vimscript nadaje się świetnie do torturowania wrogów i chyba tylko do tego. Proste rzeczy można w nim zrobić, ale przy bardziej zaawansowanych zadaniach czuć, że ten język był tworzony na przestrzeni wielu lat i dopiero niedawno stał się czymś bardziej rozbudowanym. Z kolei Elisp używany w Emacsie jest jednym z dialektów poważnego języka jakim jest Lisp. Składnia jest trochę nietypowa, ale można się przyzwyczaić i ma ona swój urok. Używanie Lispa jako główny język edytora ma jeszcze tę zaletę, że kod lispowy można wsadzić niemal wszędzie - w szablon, w wartość zmiennej konfiguracyjnej, podobno nawet w RegEx. Jako bonus, konfigurując Emacsa uczymy się języka, który być może przyda nam się kiedyś w naszym życiu zawodowym. W Vimscripcie się raczej nie pisze poza Vimem. :P

Uczucie "zaplanowania" W Emacsie aż czuć, że to wszystko zostało dokładnie przemyślane. Po prostu wszystko do siebie pasuje. Ciężko mi to bardziej opisać. Emacs był od razu planowany jako rozbudowany edytor. Vi, pradziad Vima, był prostym edytorem z nietypowym obłożeniem klawiszy. Przykładem znacznie lepiej przemyślanej funkcji jest wprowadzanie ścieżek - Emacs obsługuje tzw. fuzzy matching jeszcze lepiej niż zsh, z którego to znam. O co chodzi? Wpisuję "~/p/c+/i/sr" i wciskam Tab. Tekst zamienia się w "~/programs/c++/integral/src". Vim obsługuje jedynie standardowe uzupełnianie Tabem bez udziwnień. Niby nic, ale ja z tego korzystam prawie cały czas. Wiem, że Emacs i Vi są w podobnym wieku, ale Emacs sprawia wrażenie znacznie dojrzalszego.

Emacs Daemon

A to, to jest po prostu poezja! Włączam sobie na starcie systemu daemona, a potem każdy kolejny Emacs pracuje na współdzielonych buforach, ustawieniach, wszystkim. Dodatkowo, kolejne Emacsy włączają mi się błyskawicznie (no dobra, to był główny cel, gdy to pisali...) . Vim niby ma jakąś szczątkową obsługę pracy w trybie klient-serwer, ale zawsze mi się wydawało, że to działa na zasadzie "Ej, Heniek! Rąbnijmy tutaj serwera! Może się przyda!".

Zarządzanie wieloma plikami/buforami W Vimie zawsze irytowało mnie zarządzanie buforami. Domyślnie sam zamykał więcej niż trzeba, za to po włączeniu opcji "hidden" (która w teorii sprawia, że Vim sam nic nie zamyka), działy się czasem dziwne rzeczy. Emacs z założenia nie zamyka nic o ile mu tego wyraźnie nie rozkaże. Przy takich założeniach, musi mieć dobre zarządzanie buforami i na szczęście faktycznie ma.

Problemy

Nie da się ukryć, że Vim ma jednak kilka asów w rękawie.

Uzupełnianie składni

W Emacsie bardzo brakuje mi vimowego Omnicompletion. Podobno da się zrobić jakieś dopełnianie składni. Podobno. Próbowałem już kilku wtyczek i żadna nie zdała egzaminu. CEDET, który wydawał mi się rozwiązaniem, nawet nie chciał się zainstalować.

Inna filozofia

Sporym problemem jest mój styl pracy. Do tej pory wiele robiłem w shellu. Wchodziłem do katalogu, włączałem Vima, pisałem coś, zrzucałem do tła, robiłem coś, itd. Miałem sporo autorskich ułatwień, przez co pracowało mi się naprawdę wygodnie. Emacs kładzie nacisk na robienie wszystkiego z poziomu samego edytora. Niby jest nieźle, ale np. Gita wolę obsługiwać klasycznie. Częściowo udało mi się coś na to zaradzić i zmapowałem sobie jakiś klawisz do uruchamiania xterma (wbudowane w Emacsa emulatory terminali miały problemy z moim wypasionym promptem). Mimo wszystko, wywrócenie stylu pracy do góry nogami trochę boli.

Podświetlanie nie-kodu Apropos Gita. Vim mi bardzo ładnie podświetlał wszelkie jego pliki tymczasowe np. przy robieniu commita czy interaktywnego rebase'a. Emacs serwuje mi zwykły biały tekst. Ogólnie, Vim znacznie lepiej podświetla zwykłe "generic" pliki konfiguracyjne. Jako ciekawostkę dodam, że Vim podświetla config Emacsa (nie wiem czy nie lepiej niż sam Emacs!), ale w drugą stronę jest już cienko.

Zwijanie tekstu

Boli mnie też brak vimowego zwijania tekstu. Stawiałem gdzieś parę znaczników "{{{" i "}}}" i gotowe. W Emacsie znów podobno coś takiego jest.

Uniwersalność

Tu będzie krótko: nawet mój router ma Vi, czego o Emacsie powiedzieć nie mogę.

Podsumowanie

Wszystko wskazuje na to, że do większości zadań zostanę przy Emacsie. Nie zmienia to jednak faktu, że Vim to wciąż świetny edytor i nadal będę go do pewnych rzeczy używał.

PS: Tak, wiem, że w necie są dosłownie setki podobnych wpisów (z przejściami w obie strony).

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.