关于,等vim快捷键 和major mode的关系

之前用的vim,被油管的spacemacs视频惊艳到立马着手在win上装了一个,并一边读文档一边实验然后遇到了奇怪的事情。 文档内提示 , 被重新binding为major mode leader key,立马新开了一个窗口试了下,功能仍然没有变化,看了看 .spacemacs,确实有将其 binding 为 major mode leader key。随后用 SPC ? 查找了该键,发现 , binding了 evil-find-char-reverse 这个函数,说明这该键确实执行 vim 中原本的功能。随后一阵折腾后发觉,在有些情况下确实 , 会起到 major mode leader key 的作用,而且SPC ? 查询到的 binding 也会改变。随后发觉之前在新建窗口内操作时该键的 binding 被归在 evil-motion-state 这 minor mode 下,不过我之前并未进入任何特殊的 state一直是在 normal state下。同时发现 gf ESC 等键也有类似的情况,在某些情况下 binding 会变化。那么问题来了,evil-motion-state 是什么,同时这些major mode的变化到底以什么为基准。

油管上哪个视频?发出来分享围观一下。

我没在 spacemacs 下使用过 , 这个 leader 键。

难道它不会与 evil-find-char-reverse 按键绑定冲突?


我想起来了:, 这个 leader 键是见过的。spacemacs 在 org src block 编辑的时候会提示按 , ' 退出编辑窗口,不过我一般都是按 ctrl+c '

这个 , leader 键和 , 查找上一个匹配字符同属于 Normal 模式下的绑定,so 一个合理的猜测是在大部分情况下一个按键绑定会被另一个覆盖,即实际上只会有一个会发生作用。

  • 打开 Org 文件时 Major mode 是 Org-mode

  • 打开 Python 文件时 Major mode 是 Python-mode

  • 打开 Clojure 文件时 Major Mode 是 Clojure-mode

  • M-x 后输入 describe-mode 可以看到 Major-mode 下的 Minor-modes

  • M-x 后输入 describe-function 再输入 evil-motion-state ,Emacs 会告诉你这函数干什么,你还能跳转到这个函数上。

这些问题都是最最最简单的问题,只有我这样的菜鸟才会很无聊地回答你,你真想入门还是看子龙山人的 “21天学 Emacs ” 系列视频。

1 个赞

Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs - YouTube 看了这个之前,我一直在纠结一个问题,如何方便地用vim记录一些代办事项/列表什么的,这个视频完美解决了这个问题。然后我就找到了这个即开即用的emacs 配置spacemacs,准备在emacs上用vim。再之后我就在一个劲的看spacemacs abc脑袋乱成一团浆糊。","如果我只是打开一个空白的文档,那它就还是vim里的功能,如果我打开了任何一个带语法的文档,那么它就变成了major mode for leader key, 虽然我还不知道它有什么用。同样的事情也发生在我用gf快捷键的时候,这个我在vim里还挺常用。能直接打开光标下路径的文件,而如果我打开的是.spacemacs,我就发现gf会变成未定义的快捷键。

很显然,Emacs 作为一个多模式编辑器,按键是可以动态变化的。

楼主的排版可以说是相当、相当、相当的随意,楼上愿意认真阅读并且回答的无疑是真爱。

1 个赞

看完了。想用 org mode 记录待办事项是不错的,至于视频的其它部分我就看不出来“惊艳”在哪了。

前 Vim 党,尝试过 spacemacs,至今未能完成到 emacs 党的转变。Vim/MacVim/neoVim/VimR/oni? 插件总量 30 个,spacemacs 271 个。

目测楼主是手机打字,表示我在用某些不好用的手机输入法也会打成这样。不会用标记语法也没法怪他 ╮( ̄▽ ̄"")╭

iPhone 自带的输入法已经挺不错了。

其他格式可省,换行/分段还是要的吧。不论哪一种输入法,回车键都在醒目位置。

退格键在normal-state下没用,我把它绑到evil-find-char-reverse了。一开始是把,绑回去的,后来发现真的不常用,就任,作为leader了,把reverse绑到另一个更不常用的键上了。

看来我的猜测是对的?Normal 下按 , 实际上并不会调用 evil-find-char-reverse 函数。

另外,退格键在 Normal 下是被我用来清除搜索高亮了,挺早沿袭的一个习惯。