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")))
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")
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: