Doom-emacs: [HOWTO]定义一个自定义的邪恶ex命令

创建于 2019-09-12  ·  3评论  ·  资料来源: hlissner/doom-emacs

我想要实现的目标
由于我笨拙地不愿意释放班次,因此我想在邪恶的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-exafter! 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”)))

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 等级

相关问题

Ptival picture Ptival  ·  3评论

gilbertw1 picture gilbertw1  ·  3评论

AloisJanicek picture AloisJanicek  ·  3评论

governorgoat picture governorgoat  ·  3评论

rgrinberg picture rgrinberg  ·  3评论