Vim 邪恶的Emacs模式:句子动作和其他问题

Vim 邪恶的Emacs模式:句子动作和其他问题,vim,emacs,clojure,evil-mode,Vim,Emacs,Clojure,Evil Mode,我喜欢维姆。它给了我一种感觉,我正在直接进入文本,并按照我的意愿将其弯曲 也就是说。我也喜欢Clojure、Clojurescript、Lisp和组织模式。我真的,真的试图在邪恶模式下喜欢Emacs,在我沮丧地放弃之前,我给了它6-8周的时间 我正在考虑再试一次,因为我看到了一些使用ractive.js和org模式进行有文化编程的非常好的例子。但这次我想提前计划。我有一个简短的清单,我想知道如何做之前,我只是随意零收费(如果,事实上,我有足够的勇气去再次): 句子和段落动作。我写了一些代码,但

我喜欢维姆。它给了我一种感觉,我正在直接进入文本,并按照我的意愿将其弯曲

也就是说。我也喜欢Clojure、Clojurescript、Lisp和组织模式。我真的,真的试图在邪恶模式下喜欢Emacs,在我沮丧地放弃之前,我给了它6-8周的时间

我正在考虑再试一次,因为我看到了一些使用ractive.js和org模式进行有文化编程的非常好的例子。但这次我想提前计划。我有一个简短的清单,我想知道如何做之前,我只是随意零收费(如果,事实上,我有足够的勇气去再次):

  • 句子和段落动作。我写了一些代码,但我写的纯文本要多得多。在编辑时,我通常会在一两句话的结尾处进行更改/删除。我无法让它在邪恶模式下工作,iirc甚至有一面旗帜表明这是可能的,但我无法让它工作。邪恶想出这个动议了吗?若否,我会如何讲述这项议案
  • 领导者地图和元效率地图。直到我发现领导者地图和用于制作地图的地图,我才真正开始在vim中变得很棒。没什么太疯狂的——我只是创建了一个映射来打开我的.vimrc,并在.vim文件中设置了一些缩写,这样在意识到我需要它的几秒钟内就有了一个永久映射。emacs中的等效技术可能是什么?如何以vim-ish(即最小弦)的方式制作贴图?对我来说,这是利斯普还是半身像
  • 缓冲区命令。我不太明白有2-4个和弦来更改您正在处理的文件的逻辑。我愿意学习——我并不是真的使用了vim缓冲区,我只是一直在低效地打开文件——但如果能找到一个教程,当我要走上邪恶的道路时,它不会说服我以vim的方式输入,那就太好了

编辑大战是愚蠢的,emacs有很多选择,但我喜欢home row!有没有一种方法可以让我在保持我学过的这个不错的编辑器的同时获得emacs操作系统的强大功能?

想想有两个孩子,你会问他们中的一个是优秀的另一个吗

WRT Emacs,忘记按键,忘记vi模拟,从命令开始。 如果一个命令绑定到一个键,Emacs会在之后告诉您,不需要显式地学习它

Emacs的线索是它的可扩展性。试一下M-x杀戮刑期RET.不按你想要的方式行动?带着更改请求回到这里,一两分钟后您就会收到:-)

  • 句子和段落运动:我建议你给出一些不适合你需要的命令示例。我喜欢邪恶的动作键
  • leader maps:该文档应该向您展示如何使用emacs。定义关键点如下所示:

    (define-key evil-normal-state-map "q" 'ido-kill-buffer) ; was previously record macro
    
    另外,请务必阅读官方pdf文档。另请看关键和弦模式的示例

  • 缓冲区命令:是的,管理缓冲区应该更快。你知道ido模式吗? 下面是我如何组合使用
    主音和弦
    ido

    (key-chord-define-global "'b" 'ido-switch-buffer)
    
    对于
    next buffer
    previous buffer
    ,我有类似的键。我认为这比在终端上找到文件路径来启动vim要快得多。 此外,我无法不查找新文件:

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

编辑:在转到句子结尾时:

因此,邪恶使用了
邪恶的前向语句
,但是的,它的行为与vim中的不同(参见注释)。Emacs有
转发语句
,但它有相同的行为。我找不到具有预期效果的函数

转发语句
基于
语句结束
变量(请参见
M-x ielm
),该变量是定义行结束的regexp。所以有可能重新定义它。下面是一个需要扩展的简单示例:

    (setq sentence-end "[\\.\\?\\!] +") ;; . or ? or ! followed by spaces.
现在向前的句子将在下一点停止。我们可以重新映射邪恶的


到现在为止,答案是邪恶使用了emacs对句子的定义,这与vim的定义不同。要接近vim的版本,请将
句尾双空格设置为
nil

(setf sentence-end-double-space nil)
委员会:

如果只想在句子之间使用一个空格,可以将变量
句子结束双空格
设置为
nil
,以使句子命令停止使用单空格。然而,这有一个缺点:无法区分句子结尾的句点和表示缩写的句点。因此,为了方便可靠地编辑,我们建议您遵循双空间约定


当我编辑散文时,我使用的解决方案是:

f.


它不像维姆的句子动作那么优雅,但它确实做到了。如果您不希望光标正好落在句号上,也可以使用“t”命令。与其他运动命令一样,它可以与其他按键组合以进行删除或执行任何其他操作

为什么贴上vim标签?我会尽量说清楚的。当我在vim中使用“')键时,它会将光标移到当前句子的末尾,无论是以“.”、“?”或“!”结尾的句子。当我在emacs中使用“')时,它会将光标移到行的末尾。这对于编辑代码来说可能很好,但我更经常地编辑纯文本,因此我使用“改到句末”的语义比我需要的要多很多。也许Emacs扩展性最好的部分之一是,你可以做类似vi模仿的事情。
f.
F.