从vim转来emacs后遇到的几个问题,求解答

刚从vim转来emacs没几天,尝到了使用spacemacs的甜头,但同时也遇到了一点小问题,求解答

问题一: Evil模式下,如何在visual mode时,粘贴系统剪贴板内容?

在insert mode下,可以使用command+v来粘贴,但是visual model就不能用p来粘贴,请问如何设置?

问题二: 如果在Evil模式下选择有下划线连成的词?

在vim里,我用 viw 可以选中 insert_mode 中的 insert_mode

但在spacemacs中,我只能选中 insert ,请问如何设置?

问题三: 编写markdown输入代码块时的`号问题

输入三个 ` 号时

自动补全的结果会是:

请问怎样能让最终效果是这样:

感谢解答。

1 个赞

问题一的不完美解决办法

需要做如下设置:

(fset 'evil-visual-update-x-selection 'ignore)

并且使用 P 来粘贴

要是能用 p 就好了

问题二的解决办法:

原来是要使用 viW,只是和vim不统一。

做如下设置可以使 viw 选中时包括下划线

(with-eval-after-load 'evil
    (defalias #'forward-evil-word #'forward-evil-symbol))

问题三暂时没找到解决办法

三个 `(backquote/backtick)的写法

```java
code
```

GitHub Flavored Markdown 中规定的,它是 Github 对官方 Markdown 的扩展,原来没这个规定。

markdown-mode.el 中给 GitHub Flavored Markdown 提供了一个单独的 Major Mode——gfm-mode,在这个 Mode 下,输入第三个 backtick 时,会自动让你选一个语言,并自动添加余下的三个 backtick(亲自试试就知道了)。markdown-mode.el 也有很详细的文档。

1 个赞

谢谢回复,我用的是spacemacs,在 Markdown layer的文档里没找到gfm-mode相关的说明,是不是需要单独安装 markdown-mode 这个包才行?

在源码里找到快捷键了,是 SPC m x C 就可以选择语言并生成 GFM的code block了。

另外在 .spacemacs 的 user-config 里加入:

  (add-to-list 'auto-mode-alist '("\\.md\\'" . gfm-mode))
  (add-hook 'gfm-mode-hook
            '(lambda()
               (setq indent-tabs-mode nil)
               (setq tab-width 4)))

就可以在输入三个 blacktick 后,自动选择语言并补全后面三个 backtick

但我有个小问题,下面一行总是会多出一个 backtick ,很奇怪


发现是因为.md文件默认是对 backtick自动配对导致的,要想办法先把自动配对去掉。

如果你希望 viw 选中一个 word 的时候包括 下划线, 可以使用下面的 elisp 代码:

    (modify-syntax-entry ?_ "w")

你可以在一些 mode-hook 中添加,因为并不是所有的语言你都希望下划线算作一个 word,目前我就在 python-mode-hook 和 js2-mode-hook 开启了这个选项。

2 个赞

http://spacemacs.org/doc/FAQ.html#include-underscores-in-word-motions

Spacemacs 的 FAQ 中就提到了,建议把 FAQ 多刷几遍。

好的,多谢解答。

后面会跟一个 backtick 的问题,我通过 这里 解决了。

只要在user-config中添加一行:

(sp-pair "`" nil :actions :rem)

注意我这里是把所有 backtick的自动配对给禁用了。

如果你有方法只禁用markdown里的backtick自动配对,请分享一下,谢啦。

下面是我尝试失败了的配置:

  (when (fboundp 'sp-pair)
    (sp-pair '(markdown-mode gfm-mode) "`" nil :actions :rem))