Emacs viper-mode

Ostatnio mnie jakoś tak natknęło żeby przejść na Vima.

Przypomniały mi się czasy w których dużo rzeczy można było zrobić szybciej niż w Emacs’ie.
Po prostu ręce nie wychodziły po ‘największe pole na klawiaturze’.

Zaciekawiła mnie natomiast koncepcja ‘viper-mode’ o którą się obiłem na jednym blogu:
http://kennym.github.com/blog/2011/05/29/My-switch-from-Vim-to-Emacs/

Viper-mode powiadasz? Hmm ciekaw jestem czy by to nie kolidowało z np modami itd Jakie by były wady tego rozwiązania.

Sam ten koncept wpadł mi do głowy ponieważ bardziej mi odpowiadały skróty klawiszowe z Vim niż z Emacs’a (kwestia przyzwyczajenia).
Z drugiej strony Emacs ma sporo rozszerzeń.

Pytanie:
Próbował ktoś z was live Viper-mode? Z czym to się je? Jak wygląda sprawa z rozszerzeniami?
Czy też może przejść na Vim’a bo ten mode totalnie zassysa? :smiley:

PS Nie jestem uber-pr0 z Emacs’a ani z Vim’a. Moje rozterki wynikają z tego że jeszcze nie wybrałem ‘ścieżki’. :wink:
PS2 To nie flame. :stuck_out_tongue:
PS3 Nie umiem emacs-lisp. Ale też nie widzę wielkich przeszkód żeby go mniej więcej ogarnąć w niedalekiej przyszlości (albo teraz).

Vim jest o niebo wygodniejszy w konfiguracji, jeśli nie jesteś lispowym nerdem. Instalujesz vundle do pluginów i już :wink: Esc warto przemapować na jk i przeczytać 2 wpisy które kiedyś tu zamieściłem: http://rubyonrails.pl/forum/p30038-2011-10-02-22%3A50%3A18#p30038 i :help w vimie.

PS. Filozofia Emacsa bardzo mi się podoba, po paru miesiącach jednak odkryłem że w vimie wszystko jest już wbudowane (text-objects itd itd itd). Choć gdyby nie używanie Emacsa, nadal do poruszania się w Vimie używał bym strzałek :]

PS2. Do railsów i okolic o wiele wygodniejsze są vimowe pluginy (te z Emacsa zawsze coś nawalały i trzeba było kombinować).

Jeśli chodzi o emulację vi w emacsie to możesz natknąć się na viper, vimpulse i evil. Próbowałem wszystkich trzech i jeśli chodzi o dwa pierwsze rozwiązania to można by je określić jako przeciwieństwo koncepcji “work out of the box”. Vimpulse do tego ma sporo konfliktów z istniejącymi paczkami elispa.

Za to evil daje radę po całości. Oprócz podstawowych stanów vima ma również evil-motion-state w którym ma tylko vimowe keybindings do poruszania się, oraz emacs-state czyli waniliowe keybindings emacsa. Te dwa stany uruchamiasz w razie potrzeby jeśli jakiś keybinding jest w konflickie z ustawionymi przez dany mode w buforze (np. magit, dired-mode). Poza tym wiele rzeczy z vima jest zaimplementowane - substitution (na wypasie bo na bieżąco aktualizuje bufor i pokazuje ci zmiany jakich dokona), text blocks, makra, możesz nawet zainstalować evil-surround (chociaż ma trochę błędów).
Ogólnie user-experiance jest bardzo dobry masz za jednym razem szybkość edytowania znana z vima i konfigurowalność oraz rozbudowanie emacsa. Jak do tej pory nie natknąłem się na żaden konflikt między innymi modami.

Ciężko porównać obydwa środowiska vim ma to czego brakuje emacsowi i odwrotnie. Np. emacs nie ma mode do pracy w railsach z prawdziwego zdarzenia jakim jest rails.vim. Z drugiej strony vim nie ma czegoś takiego jak rspec-mode. Emacs ma ido i anything które naprawdę ułatwiają pracę ale z drugiej strony kolorowanie składni w ruby-mode pozostawia wiele do życzenia (tym bardziej jeśli wziąść pod uwagę że paczką opiekuje się matz).

@asok
Czy do Emacs’a jest coś takiego jak vundle w Vim?

Jasne nazywa się package.el. Spójrz tutaj emacs-starter-kit

Chodzi Ci o ELPA? To chyba jednak trochę co innego, vundle może ściągnąć rozszerzenia z gita, więc tak jak w bundlerze możesz po prostu podać adres projektu na githubie i update’ować na bieżąco.

Nigdy nie używałem vundle więc rzeczywiście to nie do końca to samo. Być może el-get jest jego odpowiednikiem.