我想要实现的目标
由于我笨拙地不愿意释放班次,因此我想在邪恶的ex命令中添加大写的':w'和':q'。
到目前为止,我尝试过:
;;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
,没有喜悦
系统信息
((emacs
(版本:“ 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 X11 XDBE XIMD MODULES LITCHS XWID”)
(内部版本。“ 2019年4月12日”)
(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 = $ {prefix} / lib / x86_64-linux-gnu''--libexecdir = $ {prefix} / lib / x86_64-linux-gnu'--disable-maintainer-mode --disable-dependency-tracking --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 =。-fstack-protector-strong -Wformat -Werror = format-security -no-pie''CPPFLAGS = -Wdate-time- D_FORTIFY_SOURCE = 2''LDFLAGS = -Wl,-Bsymbolic-functions -Wl,-z,relro -no-pie'“))
(厄运
(版本:“ 2.0.9”)
(build。“ 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-通用#69-Ubuntu SMP Wed Sep 4 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“))
(配置
(envfile。envvar文件)
(ELC文件。0)
(模块:完成公司常春藤:ui厄运末日-仪表板hl-todo modeline导航Flash ophints(弹出+所有+默认值)vc-gutter vi-tilde-fringe窗口选择工作区:编辑器邪恶文件模板折叠多个光标-text片段:emacs dired electric vc:tools eval flycheck(lookup + docsets)magit:lang data emacs-lisp markdown(org + dragndrop + ipython + pandoc + present)python rest sh:config默认
(软件包“ org-caldav”“ calfw”“ calfw-org”“(ttl-mode:recipe(:host github:repo jeeger / ttl-mode))”))
(elpa软件包“ n / a”)))
您的第一个片段是正确的:
;;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")
最有用的评论
啊,那是因为
"write"
是一个字符串,而#'write
是一个符号。evil-ex-define-cmd
将字符串视为要执行的ex命令,将符号视为对elisp函数的引用。 您必须执行以下操作: