Doom-emacs: [HOWTO] Definieren Sie einen benutzerdefinierten bösen Ex-Befehl

Erstellt am 12. Sept. 2019  ·  3Kommentare  ·  Quelle: hlissner/doom-emacs

Was ich erreichen will
Da ich mit dem Freigeben von Shift ungeschickt bin, möchte ich den bösen Ex-Befehlen die großgeschriebene Version von ': w' und ': q' hinzufügen

Ich habe es bisher versucht:

;;doom.d/config.el
(evil-ex-define-cmd "W" #'write)
;;doom.d/config.el
(after! evil 
  (evil-ex-define-cmd "W" #'write)
)

Nach dem Neustart von emacs und der Eingabe von :W führt beides immer noch zu

Unbekannter Befehl: '' W "

Ich habe auch after! evil-ex und after! evil-ex-cmd ausprobiert, keine Freude

System Information


((Emacs
(Version. "26.2")
(Funktionen. "XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT
(Build. "12. April 2019")
(buildopts "--build = x86_64-linux-gnu --prefix = / usr '--includedir = $ {Präfix} / include' '--mandir = $ {Präfix} / share / man' '--infodir = $ {Präfix} / share / info '--sysconfdir = / etc --localstatedir = / var --disable-quiet-rules' --libdir = $ {Präfix} / lib / x86_64-linux-gnu '' --libexecdir = $ {Präfix} / lib / x86_64-linux-gnu '--disable-Betreuer-Modus --disable-Abhängigkeitsverfolgung --prefix = / usr --sharedstatedir = / var / lib --program-Suffix = 26 - with-modules --with-file-notification = inotify --with-mailutils --with-x = yes --with-x-toolkit = gtk3 --with-xwidgets --with-lcms2 'CFLAGS = -g -O2 -fdebug-prefix-map = / build / emacs26-CYbeHB / emacs26-26.2 ~ 1.gitfd1b34b =. D_FORTIFY_SOURCE = 2 '' LDFLAGS = -Wl, -Bsymbolische Funktionen -Wl, -z, relro -no-pie '"))
(Untergang
(Version. "2.0.9")
(build. "HEAD -> entwickeln, Ursprung / Entwickeln, Ursprung / KOPF a16838b7 2019-09-11 23:42:27 -0400"))
(System
(Typ. Gnu / Linux)
(Konfiguration "x86_64-pc-linux-gnu")
(Shell. "/ bin / bash")
(uname. "Linux 4.15.0-62-generic # 69-Ubuntu SMP Mi Sep 4 20:55:53 UTC 2019 x86_64")
(Pfad "~ / .cargo / bin" "~ / bin" "~ / .local / bin" "/ usr / local / bin" "~ / .cargo / bin" "~ / .local / bin" "~ / bin "" / usr / local / sbin "" / usr / local / bin "" / usr / sbin "" / usr / bin "" / sbin "" / bin "" / usr / games "" / usr / local / Spiele "" / snap / bin "" ~ / .fzf / bin "" /usr/lib/x86_64-linux-gnu/emacs/26.2/x86_64-linux-gnu "))
(config
(envfile. envvar-Datei)
(elc-files. 0)
(Module: Abschlussfirma Efeu: UI Doom Doom-Dashboard hl-todo Modeline Nav-Flash-Ophints (Popup + alle + Standardeinstellungen) -text snippets: emacs dired electric vc: tools eval flycheck (lookup + docsets) magit: lang daten emacs-lisp markdown (org + dragndrop + ipython + pandoc + present) python rest sh: config default)
(Pakete "org-caldav" "calfw" "calfw-org" "(ttl-Modus: Rezept (: Host Github: Repo Jeeger / ttl-Modus))")
(elpa-Pakete "n / a")))

question elisp resolved

Hilfreichster Kommentar

Ah, in diesem Fall lag es daran, dass "write" eine Zeichenfolge und #'write ein Symbol ist. evil-ex-define-cmd behandelt Zeichenfolgen als auszuführende Ex-Befehle und Symbole als Verweise auf elisp-Funktionen. Sie müssten tun:

;;doom.d/config.el
(evil-ex-define-cmd "W" "write")

Alle 3 Kommentare

Ihr erster Ausschnitt ist korrekt:

;;doom.d/config.el
(evil-ex-define-cmd "W" #'write)

Die Funktion write existiert jedoch nicht. Was Sie wollten, war evil-write :

;;doom.d/config.el
(evil-ex-define-cmd "W" #'evil-write)

Danke vielmals! Ich wurde über den Wert von evil-ex-commands in die Irre geführt:

...
("write" . evil-write)
("w" . "write")
...

Hier scheint es, dass w nur auf write verweist, was nicht zu funktionieren scheint, wenn ich es über evil-ex-define-cmd mache

Ah, in diesem Fall lag es daran, dass "write" eine Zeichenfolge und #'write ein Symbol ist. evil-ex-define-cmd behandelt Zeichenfolgen als auszuführende Ex-Befehle und Symbole als Verweise auf elisp-Funktionen. Sie müssten tun:

;;doom.d/config.el
(evil-ex-define-cmd "W" "write")
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen