Doom-emacs: [كيف] حدد أمرًا سابقًا شرًا مخصصًا

تم إنشاؤها على ١٢ سبتمبر ٢٠١٩  ·  3تعليقات  ·  مصدر: hlissner/doom-emacs

ما أريد تحقيقه
نظرًا لأنني أخرق في تحرير shift ، فأنا أرغب في إضافة النسخة الكبيرة من ": w" و ": q" إلى أوامر ex evil

حاولت حتى الآن:

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

بعد إعادة تشغيل emacs وإدخال :W ، لا يزال كلاهما ينتج

أمر غير معروف: "W"

لقد جربت أيضًا after! evil-ex و after! evil-ex-cmd ، لا فرح

معلومات النظام


((إيماكس
(الإصدار "26.2")
(الميزات. "XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 XIM XDBETS
(الإصدار "12 أبريل 2019")
(buildopts "--build = x86_64-linux-gnu --prefix = / usr '--includedir = $ {prefix} / include' '--mandir = $ {prefix} / share / man' --infodir = $ {prefix} / share / info '--sysconfdir = / etc --localstatedir = / var --disable-silent-rules' --libdir = $ {بادئة} / lib / x86_64-linux-gnu '' --libexecdir = $ {بادئة} / lib / x86_64-linux-gnu '- تعطيل-صيانة-وضع -تعطيل-تبعية-تتبع - رمز = / usr --sharedstatedir = / var / lib - لاحقة البرنامج = 26 - with-modules --with-file-media = 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 =. -fstack-protector-strong -Wformat -Werror = format-security-no-pie '' CPPFLAGS = -Wdate-time - D_FORTIFY_SOURCE = 2 '' LDFLAGS = -Wl، -Bsymbolic-function -Wl، -z، relro -no-pie '"))
(الموت
(الإصدار "2.0.9")
(بناء. "HEAD -> تطوير ، أصل / تطوير ، أصل / HEAD a16838b7 2019-09-11 23:42:27 -0400"))
(النظام
(النوع. gnu / linux)
(التكوين "x86_64-pc-linux-gnu")
(shell. "/ bin / bash")
(uname. "Linux 4.15.0-62-generic # 69-Ubuntu SMP Wed 4 Sep 20:55:53 UTC 2019 x86_64")
(المسار "~ / .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 / الألعاب "/ snap / bin" "~ / .fzf / bin" "/usr/lib/x86_64-linux-gnu/emacs/26.2/x86_64-linux-gnu"))
(config
(envfile. envvar-file)
(ملفات elc. 0)
(الوحدات النمطية: شركة الإكمال Ivy: ui doom doom-dashboard hl-todo modeline nav-flash ophints (popup + all + defaults) vc-gutter vi-tilde-fringe window-select مساحات العمل: محرر ملفات شرير قوالب طي عدة مؤشرات استدارة -text مقتطفات: emacs dired electric vc: tools Eval flycheck (lookup + docs) magit: lang data emacs-lisp markdown (org + dragndrop + ipython + pandoc + present) python rest sh: config default)
(الحزم "org-caldav" "calfw" "calfw-org" "(ttl-mode: recipe (: host github: repo jeeger / ttl-mode))")
(حزم elpa "غير متوفر")))

question elisp resolved

التعليق الأكثر فائدة

آه ، في هذه الحالة كان السبب هو أن "write" عبارة عن سلسلة و #'write رمز. يعامل evil-ex-define-cmd السلاسل كأوامر ex للتنفيذ والرموز كمراجع لوظائف elisp. عليك أن تفعل:

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

ال 3 كومينتر

مقتطفك الأول صحيح:

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

ومع ذلك ، فإن الدالة write غير موجودة. ما كنت تريده هو evil-write :

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

شكرا جزيلا! لقد تم تضليلي بقيمة evil-ex-commands :

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

يبدو هنا أن w يشير فقط إلى write ، والذي يبدو أنه لا يعمل عندما أفعل ذلك عبر evil-ex-define-cmd

آه ، في هذه الحالة كان السبب هو أن "write" عبارة عن سلسلة و #'write رمز. يعامل evil-ex-define-cmd السلاسل كأوامر ex للتنفيذ والرموز كمراجع لوظائف elisp. عليك أن تفعل:

;;doom.d/config.el
(evil-ex-define-cmd "W" "write")
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات