Użyłem wysoce dostosowanego vima, a teraz używam jeszcze bardziej dostosowanego emacsa. Myślę, że każdy przypadek mapowania klawiszy znajdziesz w moim pliku konfiguracyjnym mapowania klawiszy https://github.com/mbriggs/.emacs.d-oldv2/blob/master/init/init-keymaps.el
Pamiętaj, że rebinduję rzeczy, które prawdziwi użytkownicy emacsa uznaliby za herezję, więc YMMV, jeśli kiedykolwiek zechcesz nauczyć się "prawdziwego" emacsa (naprawdę tego nie robię).
Jedną rzeczą, którą poleciłbym każdemu byłemu vimmerowi, jest to
;;; esc quits
(defun minibuffer-keyboard-quit ()
"Abort recursive edit.
In Delete Selection mode, if the mark is active, just deactivate it;
then it takes a second \\[keyboard-quit] to abort the minibuffer."
(interactive)
(if (and delete-selection-mode transient-mark-mode mark-active)
(setq deactivate-mark t)
(when (get-buffer "*Completions*") (delete-windows-on "*Completions*"))
(abort-recursive-edit)))
(define-key evil-normal-state-map [escape] 'keyboard-quit)
(define-key evil-visual-state-map [escape] 'keyboard-quit)
(define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)
tak, że esc faktycznie zamyka prawie wszystko (np. oczekujące monity w minibuforze)
Jako ktoś, kto pochodzi z emacsa, wypróbował vim i zdał sobie sprawę, że jest wiele rzeczy do zyskania, dużo eksperymentowałem, kiedy zacząłem używać zła. Chociaż poniższe kwestie są kontrowersyjne, chciałem zachować klawisze emacsa, które są powszechnie używane w terminalu, firefoxie, kakao itp., Ale nie chciałem stracić możliwości edycji vima. W końcu zdecydowałem się na ponowne powiązanie następujących kluczy w moim .emacs:
Niestety nakładają się one na operacje vima „przesuń jeden ekran w górę lub w dół”. Jednak przyzwyczaiłem się do tego, używając zamiast tego:
Ponadto, jeśli pochodzisz z vima i chcesz uzyskać szybką ścieżkę z trybu wstawiania do normalnego trybu przy użyciu "jk" (lub dowolnej innej kombinacji 2-suwowej), najlepszym sposobem jest skopiowanie tekstu z http://www.emacswiki.org/ emacs / download / key-chord.el i wklej go do swojego ~ / .emacs.d / key-chord.el. Następnie dodaj do swojego .emacs:
Ponadto, jeśli pochodzisz z vima i uważasz, że kopiowanie do schowka w emacsie nie jest dobre, prawdopodobnie masz rację. Jednak po uruchomieniu sudo apt-get install xsel mogą okazać się przydatne następujące elementy:
Oczywiście będziesz musiał sam zdecydować, czy którakolwiek z tych kontrowersyjnych zmian jest tego warta, ale być może te podstawowe zmiany Cię zainspirują.
W przypadku innych naprawdę fajnych implementacji funkcji, takich jak usuwanie i wklejanie, usuwanie bez kopiowania do schowka, wydajny ruch 4x / 16x, użycie liczników do specyfikacji rejestru wklejania, ustawienia kart, które faktycznie działają dla c / c ++ i więcej, możesz sprawdzić pełne wersje .emacs, init.el, my-keymaps.el i my-functions.el na moim git pod adresem https://github.com/Russell91/emacs
źródło
less
command i innych).evil
, wyjmuję ją, więc wraca do ustawień klawiatury normalnego emacsa, przykład(dolist (m (list evil-normal-state-map evil-motion-state-map evil-insert-state-map)) (define-key m "\C-e" 'nil))
Byłem też użytkownikiem Vipera / Vimpulse, z ogromną ilością konfiguracji. Potem znalazłem tryb zła.
To jest cała moja konfiguracja trybu złego i działa świetnie dla mnie:
Nie, w przeciwieństwie do Viper / Vimpulse, który powodował problemy w kilku trybach.
źródło
evil-emacs-state
Zacząłem używać Evil miesiąc temu; przedtem próbowałem użyć viper / vimpulse bez większego sukcesu. Szczerze mówiąc, vimpulse jest całkiem fajne, ale używanie go z różnymi trybami było trochę kłopotliwe (np. Tryb kompilacji, w którym vimpulse zawsze szalał) pozostawiając emacsa w jakimś trybie pomiędzy vi-emacs-coś.
Kiedy przeszedłem na Zło, w końcu zacząłem odkrywać pełną moc Emacsa i wierz mi, nie żałowałem. Zło działa ładnie we wszystkich trybach, których używałem (głównie edycji, kompilacji, scratchu i eshellu), a nawet czytanie info / man / help działa bez żadnych problemów.
Tyle tylko, że znalazłem tylko dziwne przełączanie buforów, jak to robiłem: zamiast tego b <0-9>: b-TAB-then-complete-name lub: bn. Zauważ jednak, że deweloperzy Evil próbują (w niektórych przypadkach) ograniczyć zduplikowane funkcje, więc zamiast tego:! (aby wykonać polecenie powłoki), powinieneś użyć natywnego M- !.
Jeśli masz ochotę dodać / przedefiniować niektóre niestandardowe polecenia ex, po prostu otwórz evil-maps.el i edytuj go (spróbuj tego w vimie!).
Evil to wciąż młody, ale obiecujący projekt i czekam na dzień, kiedy zastąpi vipera w oficjalnej dystrybucji Emacsa.
źródło
Lubię zapisywać bufor, gdy wychodzę z
insert-mode
: (edytowane: nie pytaj o zapisanie, gdy nie ma skojarzonego pliku dla tego bufora, na przykład w buforze scratch lub magit)aby uzyskać więcej możliwości: zobacz http://wikemacs.org/index.php/Evil
Mile widziane komentarze dotyczące ulepszeń!
źródło
Używam złego przywódcy i używam ", xm" zamiast "Mx", więc rzadko wciskam klawisz Alt. Istnieje również general.el, który obsługuje wiele klawiszy liderów.
evil-matchit , naciśnij "%", aby przeskoczyć między parą tagów.
evil-nerd-commenter , naciśnij "9, ci", aby skomentować / odkomentować 9 linii
unikaj używania klawisza ESC, możesz zamiast tego nacisnąć "kj" .
Miej wiarę w wolne oprogramowanie! Nie ma rzeczy niemożliwych z Złem, które łączy w sobie moc Vima i Emacsa. Na przykład, wiele osób zakłada, że złe skróty klawiszowe kolidują z istniejącymi wtyczkami Emacs bez konieczności ponownego wiązania. Właściwie to źle
źródło
Jeśli chodzi o stronę emacsa, bardzo wolę M-. aby przejść do definicji, ale funkcja, która działa,
M-.
różni się w zależności od trybu. Mogę zastąpić go w regularny sposób, z(define-key evil-normal-state-map (kbd "M-.") 'foo)
którymfoo
sprawdza aktualny tryb dur i uruchamia odpowiednią funkcję, ale to brzmi jak to, że wymagają dużo hardcoding. Bardziej ogólne rozwiązanie jest następujące:Poza tym lubię wtyczki evil-surround (choć uważam, że smartparens to bardziej kompletne rozwiązanie) i evil-leader .
Kiedyś używałem key-chord do mapowania jk na ESC, tak jak nauczyłem się robić w vimie, ale nalegałem na traktowanie kj tak samo jak jk, więc zamiast tego używam następującego:
używam
(setq evil-move-cursor-back nil)
który nie jest zbyt vimmy (chociaż najwyraźniej możesz sprawić, że vimrc też to zrobi), po prostu nigdy nie przyzwyczaiłem się do cofania kursora po wyjściu z insert.Praktyczna wskazówka: użyj
evil-local-mode-hook
do rzeczy takich jak leniwe ładowanie trybu złego dźwięku przestrzennego, nie pomoże to wyjaśnićevil-mode-hook
. W przypadku zainstalowania złego i zła Surround z tak pakietu instalacji, można mieć go uruchomić, gdy robiszM-x evil-mode
wykonując(Oczywiście, jeśli zawsze korzystasz z trybu złego i zawsze masz zainstalowane zło, nie ma potrzeby tego automatycznego ładowania, ale wolę, aby moje .emacs były na tyle ogólne, że mogę go używać na maszynach ze starym emacsenem lub bez zainstalowane pakiety elpa).
źródło