Ich habe ein hochgradig angepasstes Vim verwendet und verwende jetzt ein noch stärker angepasstes Emacs. Ich denke, Sie finden jede Instanz von Keymapping in meiner Keymapping-Konfigurationsdatei https://github.com/mbriggs/.emacs.d-oldv2/blob/master/init/init-keymaps.el
Denken Sie daran, ich binde Dinge neu, die echte Emacs-Benutzer als Häresie betrachten würden, also YMMV, wenn Sie jemals "echte" Emacs lernen möchten (ich wirklich nicht).
Eine Sache, die ich jedem Ex-Vimmer empfehlen würde, ist diese
;;; 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)
so dass esc tatsächlich so ziemlich alles beendet (wie ausstehende Eingabeaufforderungen im Minibuffer)
Als jemand, der von Emacs kam, Vim ausprobierte und erkannte, dass es eine große Anzahl von Dingen zu gewinnen gab, experimentierte ich viel, als ich anfing, das Böse zu benutzen. Während das Folgende umstritten ist, wollte ich die Emacs-Schlüssel behalten, die universeller in Terminal, Firefox, Kakao usw. verwendet werden, wollte aber die Vim-Bearbeitungsfunktionen nicht verlieren. Am Ende habe ich mich entschlossen, die folgenden Schlüssel in meinen .emacs neu zu binden:
Leider überschneiden sich diese mit den vim-Vorgängen zum Verschieben eines Bildschirms nach oben oder unten. Ich habe es mir jedoch bequem gemacht, stattdessen Folgendes zu verwenden:
Wenn Sie von vim kommen und mit "jk" (oder einer anderen 2-Strich-Kombination) einen schnellen Weg vom Einfügen in den normalen Modus suchen, ist es am besten, den Text von http://www.emacswiki.org/ zu kopieren. emacs / download / key-chord.el und füge es in deine ~ / .emacs.d / key-chord.el ein. Fügen Sie dann Folgendes zu Ihren .emacs hinzu:
Wenn Sie von vim kommen und der Meinung sind, dass das Kopieren in die Zwischenablage in Emacs nicht gut ist, haben Sie wahrscheinlich Recht. Nach dem Ausführen von sudo apt-get install xsel kann Folgendes jedoch hilfreich sein:
Natürlich müssen Sie selbst entscheiden, ob sich eine dieser kontroversen Änderungen lohnt, aber vielleicht werden Sie diese grundlegenden Änderungen inspirieren.
Für einige andere wirklich coole Funktionsimplementierungen, wie Löschen und Einfügen, Löschen ohne Kopieren in die Zwischenablage, effiziente 4x / 16x-Bewegung, Verwendung von Zählwerten für die Einfügungsregisterspezifikation, Registerkarteneinstellungen, die tatsächlich für c / c ++ funktionieren, und vieles mehr, können Sie überprüfen Die vollständigen Versionen von .emacs, init.el, my-keymaps.el und my-functions.el finden Sie auf meinem Git unter https://github.com/Russell91/emacs
quelle
less
und anderen der Fall ist ).evil
, entferne ich sie, damit sie auf die Tastatureinstellung normaler Emacs zurückgreift, zum Beispiel(dolist (m (list evil-normal-state-map evil-motion-state-map evil-insert-state-map)) (define-key m "\C-e" 'nil))
Ich war auch ein Viper / Vimpulse-Benutzer mit einer enormen Konfiguration. Dann habe ich den Evil-Modus gefunden.
Dies ist meine gesamte Konfiguration im bösen Modus, und sie funktioniert hervorragend für mich:
Nein, im Gegensatz zu Viper / Vimpulse, die in mehreren Modi Probleme verursachten.
quelle
evil-emacs-state
Ich habe vor einem Monat angefangen, Evil zu benutzen. davor habe ich versucht, viper / vimpulse ohne großen erfolg zu verwenden. Um ehrlich zu sein, ist vimpulse ganz nett, aber die Verwendung mit verschiedenen Modi war etwas mühsam (z. B. Kompilierungsmodus, in dem vimpulse immer verrückt wurde), wobei Emacs in einem Modus zwischen vi-emacs-etwas zurückgelassen wurden.
Als ich zu Evil wechselte, begann ich endlich, die volle Emacs-Kraft zu erforschen, und glaube mir, ich habe es nicht bereut. Das Böse funktioniert gut in allen Modi, die ich verwendet habe (hauptsächlich Bearbeiten, Kompilieren, Scratchen und Schälen), und selbst das Lesen von Informationen / Mann / Hilfe funktioniert ohne Probleme.
Abgesehen davon fand ich die Pufferumschaltung nur ungerade, wie ich es früher getan habe: b <0-9> statt: b-TAB-dann-vollständiger-Name oder: bn. Beachten Sie jedoch, dass Evil-Entwickler (in einigen Fällen) versuchen, doppelte Funktionen zu reduzieren. Stattdessen :! (um den Shell-Befehl auszuführen), sollten Sie native M-! verwenden.
Wenn Sie den Drang haben, einige benutzerdefinierte Ex-Befehle hinzuzufügen / neu zu definieren, öffnen Sie einfach evil-maps.el und bearbeiten Sie sie (versuchen Sie das in vim!).
Evil ist noch ein junges, aber vielversprechendes Projekt und ich warte auf den Tag, an dem Viper in der offiziellen Emacs-Distribution ersetzt wird.
quelle
Ich möchte den Puffer speichern, wenn ich
insert-mode
Folgendes beende: (bearbeitet: Bitten Sie nicht um Speicherung, wenn für diesen Puffer keine zugeordnete Datei vorhanden ist, z. B. in einem Scratch- oder Magit-Puffer.)Weitere Möglichkeiten finden Sie unter http://wikemacs.org/index.php/Evil
Kommentare willkommen für Verbesserungen!
quelle
Ich benutze den bösen Anführer und benutze ", xm", um "Mx" zu ersetzen, also drücke ich selten die Alt-Taste. Es gibt auch general.el, das mehrere Führungsschlüssel unterstützt.
böses Matchit , drücke "%", um zwischen den Tag-Paaren zu springen.
böser-Nerd-Kommentator , drücke "9, ci", um 9 Zeilen zu kommentieren / zu kommentieren
Vermeiden Sie die Verwendung der ESC-Taste. Sie können stattdessen "kj" drücken .
Vertrauen Sie auf freie Software! Mit dem Bösen, das die Kraft von Vim und Emacs kombiniert, ist nichts unmöglich. Beispielsweise gehen viele Leute davon aus, dass Evil Keybindings mit vorhandenen Emacs-Plugins in Konflikt stehen, ohne dass eine erneute Bindung erforderlich ist. Das ist eigentlich falsch
quelle
Ich komme von der Emacs-Seite und bevorzuge M-. zur Definition gehen, aber die Funktion, die ausgeführt wird,
M-.
unterscheidet sich zwischen den Modi. Ich könnte es auf normale Weise überschreiben,(define-key evil-normal-state-map (kbd "M-.") 'foo)
indem ichfoo
den aktuellen Hauptmodus überprüfe und die entsprechende Funktion ausführe, aber das klingt so, als würde es viel Hardcodierung erfordern. Eine allgemeinere Lösung ist folgende:Abgesehen davon mag ich die Plugins Evil -Surround (obwohl ich Smartparens für eine vollständigere Lösung halte) und Evil -Leader .
Früher habe ich Key-Chord verwendet, um jk dem ESC zuzuordnen, wie ich es in vim gelernt habe, aber es bestand darauf, kj genauso zu behandeln wie jk, also verwende ich stattdessen Folgendes:
ich benutze
(setq evil-move-cursor-back nil)
was nicht sehr vimmy ist (obwohl Sie anscheinend auch Ihren vimrc dazu bringen können, dies zu tun), habe ich mich einfach nie daran gewöhnt, dass sich der Cursor nach dem Beenden des Einfügens zurückbewegt.Praktischer Tipp: Verwenden Sie es
evil-local-mode-hook
für Dinge wie das verzögerte Laden des Evil-Surround-Modus. Es hilft nicht, es einfach zu machenevil-mode-hook
. Wenn Sie also Evil und Evil-Surround mit Package-Install installieren, können Sie es starten, wenn Sie diesM-x evil-mode
tun(Wenn Sie immer den bösen Modus ausführen und immer das Böse installiert haben, ist dieses Autoload-Zeug nicht erforderlich, aber ich möchte, dass meine .emacs so allgemein sind, dass ich sie auf Maschinen mit altem Emacsen oder ohne Emacsen verwenden kann elpa-Pakete installiert.)
quelle