Evil Emacs模式:句子动作和其他问题

时间:2013-11-28 03:07:58

标签: vim emacs clojure evil-mode

我喜欢vim。它让我觉得我直接进入文本并按照我的意愿弯曲它。

那就是说。我也喜欢Clojure,Clojurescript,Lisp和Org-mode。我真的,真的试图在邪恶的模式中喜欢Emacs,并且在我沮丧地放弃之前我给了它6-8周。

我正在考虑再试一次,因为我已经看到了一些使用ractive.js和org-mode进行文字编程的非常棒的例子。但是这次我想提前做好计划。我有一个简短的清单,我想知道怎么做才能在willy-nilly收费(事实上,如果我有勇气再去一次):

  • 句子和段落动作。我写了一些代码,但是我写了更多纯文本。当我编辑时,我通常会在一两句话的结尾处更改/删除。我不能让它在邪恶的模式下工作,而且甚至还有一个标志设置似乎表明它是可能的,但我无法让它工作。邪恶有没有想出这个动议呢?如果没有,我怎么告诉它这个动议?
  • 领导地图和元效率地图。在我发现领导地图和地图制作地图之前,我并没有真正开始在vim中获得真棒。没有什么太疯狂 - 我只是创建了一个地图来打开我的.vimrc,并在.vim文件中设置了一些缩写,这样我就可以在几秒钟内获得永久地图,从而意识到我需要它。 emacs中的等效技术可能是什么?如何以vim-ish(即最小的和弦)方式制作地图?对我来说是ilisp还是半身像?
  • 缓冲区命令。我没有完全掌握2-4个和弦的逻辑,以便更改您正在处理的文件。我愿意学习 - 这不像我真的使用过vim缓冲区,我只是无法有效地打开文件 - 但是找到一个不能说服我用vim方式输入的教程我很高兴'我将走上邪恶的道路。

编辑大战是愚蠢的,emacs有很多事情要做,但我喜欢上排!有没有办法让我可以获得emacs操作系统的强大功能,同时保留我学到的这个体面的编辑器?

4 个答案:

答案 0 :(得分:6)

  • 句子和段落动议:我建议您提供一些不符合您需求的示例命令。我对邪恶的动作键很满意。
  • 领导者地图:http://wikemacs.org/index.php/Evil该文档应该向您展示如何使用emacs进行操作。键定义如下所示:

    (define-key evil-normal-state-map "q" 'ido-kill-buffer) ; was previously record macro
    

    另外请务必阅读官方pdf文档。另请参阅键和弦模式的示例。

  • 缓冲区命令:true,管理缓冲区应该更快。你知道ido模式吗? 以下是我使用key-chordido组合的方式:

    (key-chord-define-global "'b" 'ido-switch-buffer)
    

    我有next-bufferprevious-buffer的类似密钥。我认为它比在终端上找到启动vim的文件路径要快得多。 此外,我无法在没有弹丸的情况下找到新文件:https://github.com/bbatsov/projectile

现在你有更精确的问题吗?

修改:在结束句子

因此,邪恶使用evil-forward-sentence但是,它与vim中的行为不同(请参阅注释)。 Emacs有forward-sentence但它有相同的行为。我找不到具有所需效果的功能。

forward-sentence基于sentence-end变量(请参见M-x ielm),这是一个定义行尾的正则表达式。所以可以重新定义它。这是一个需要扩展的简单示例:

    (setq sentence-end "\\. ") ;;point followed by a space

现在,前一句话将在下一点停止。我们可以重新映射邪恶的)

    (define-key evil-normal-state-map ")" 'forward-sentence)

答案 1 :(得分:1)

想想有两个孩子,你会问其中一个孩子的优秀方式吗?

WRT Emacs,忘记密钥,忘记vi-mimicry,从命令开始。 如果命令绑定到某个键,Emacs将在之后告诉您,无需明确地学习它。

Emacs的线索是它的可扩展性。尝试 M-x kill-sentence RET 。不按你想要的方式行事?回到这里提出变更请求,您将在一两分钟内完成: - )

答案 2 :(得分:1)

迟到了,但答案是Evil使用了emacs'句子的定义,与vim不同。要接近vim的版本,请将sentence-end-double-space设置为nil

(setf sentence-end-double-space nil)

Emacs Manual warns

  

如果您只想在句子之间使用一个空格,可以将变量sentence-end-double-space设置为nil,以使句子命令停止为单个空格。然而,这有一个缺点:没有办法区分结束句子的句子和表示缩写的句子。为方便和可靠的编辑,我们建议您遵循两空间惯例。

答案 3 :(得分:0)

当我编辑散文时,我用来解决这个难题的解决方案是使用:

f.

F.

它并不像Vim的句子动作那么优雅,但它可以解决问题。您也可以使用" t"命令,如果你不希望光标完全停止。与其他动作命令一样,它可以与其他按键组合用于删除或您想要执行的任何其他操作。