Ich kenne verschiedene vim-Implementierungen in Emacs. Es gibt Böse-Modus, Viper, Vimpulse und Vim-Modus. Gibt es noch andere Wie vergleichen sie?
Ich evil-*
stelle fest, dass es auf MELPA viele Pakete gibt, was darauf hindeutet, dass keines zu 100% vollständig ist. Welche vim-Funktionen bieten sie und welche vim-Funktionen fehlen?
(Ich bin nicht an der Umkehrung interessiert, wo " eine Reihe von vi-Makros, die eine ziemlich vollständige Emacs-Implementierung sind "!)
vim-emulation
Wilfred Hughes
quelle
quelle
Antworten:
vi
,vip
undviper
(geordnet nach Erstellungsdatum) sind in Emacs integriert, alle diese emulieren VI.vim-mode
ist ein neuer, eigenständiger Versuch, Vim tatsächlich zu emulieren. Ervimpulse
besteht aus einer Reihe von Extrasviper
, um die nützlichsten Vim-Funktionen bereitzustellen.evil
wurde als Ersatz für erstelltvim-mode
.evil
ist das neueste Projekt und das einzige, das aktiv entwickelt wird. Ziel ist es, das Bearbeitungsmodell von Vim originalgetreu zu emulieren und die vorhandenen Emacs-Funktionen zu nutzen, wo immer dies möglich ist. Persönlich würde ich sagen, dass es zu 90% vollständig ist, da ein paar neue Befehle (wiegn
) fehlen, einige anzeigebezogene Funktionen nur schwer wiederherstellbar sind (wie die Anzeige von Tilden nach dem Ende einer Datei) und nicht implementiert werden einen Vimscript-Interpreter oder etwas anderes als die Grundlagen des Ex-Modus. Es ist jedoch einfacher zu erweitern und nachzuvollziehen als das Original. Dieevil-*
Erweiterungen entsprechen in fast allen Fällen den Emacs-Plugins von Vim (diesevil-leader
wäre beispielsweise eine Ausnahme, da es nicht erforderlich ist, die Unterstützung von Emacs-Keymaps in Betracht zu ziehen).In Anbetracht dessen
evil
, dass Vim an Punkten übertroffen wird (siehe:s
und seine visuelle Vorschau oder wie wenig Aufwand das Erstellen eines nützlichen neuen Modus aufwirft ), empfehle ich es von ganzem Herzen allen, die sich für die modale Bearbeitung für Emacs interessieren.quelle
g/
, ein neuer Befehl in Vim zu sein. Ich habe es noch nie gesehen und kann keine Dokumentation dazu finden. Was macht es in Vim?gn
. Es verwandelt Suchergebnisse in ein Textobjekt. Außerdem wurde es inzwischen implementiert.Da
evil
es meines Wissens nach der einzige aktiv entwickelte Vim-Emulationsmodus ist, werde ich meine Antwort für das Böse spezifisch machen.evil
ist in hohem Maße benutzerfreundlich und kommt einer vim-ähnlichen Erfahrung sehr nahe, aber es gibt einige vim-Funktionen, die höchstwahrscheinlich nicht (beabsichtigt) implementiert werden, und einige, die unvollständig sind, aber möglicherweise irgendwann hinzugefügt werden. Einige Beispiele für Dinge, die höchstwahrscheinlich nicht hinzugefügt werden:C-a
undC-x
) wird nicht hinzugefügt, da diesC-x
für eine Emacs-Tastenkombination zu wichtig ist.\
istevil-execute-in-emacs-state
standardmäßig gebunden .C-u
ist standardmäßig nicht an einen Bildlauf nach oben gebunden, da dies als Emacs-Tastenkombination zu wichtig ist (obwohl Sie dies mit überschreiben könnenevil-want-C-u-scroll
).Um eine Liste der vim-Funktionen zu finden, die (zum Zeitpunkt der Beantwortung dieser Frage ) noch nicht implementiert sind , sollten Sie sich am besten den Issue-Tracker ansehen . Eine zufällige Auswahl von Dingen, die auf der Liste stehen:
ex
ist nicht implementiert .:make
ist nicht zugeordnetM-x compile
.C-o
ininsert
mode verhält sich nicht so wie in vim .Es gibt noch viel mehr, einschließlich Befehlen, die nicht in der Liste der offenen Probleme enthalten sind (besonders komplizierte
ex
Befehle), aber wie Sie aus der Liste ersehen können, sind sie eher geringfügige oder undurchsichtige vim-Funktionen (vim ist ein ziemlich großes Ziel, mit dem Sie arbeiten müssen) 100% Feature-Parität erreichen).quelle
Das Ziel des Bösen ist es, Vim zu emulieren, während es das Ziel der Viper ist, Vi zu emulieren. Vim-Mode und Vimpulse sind die Vorgänger des Bösen und werden meines Wissens nicht mehr weiterentwickelt. Das Evil-Projekt wurde gestartet, um die Mängel dieser Projekte zu beheben.
quelle