emacs邪恶相当于vim重映射,例如:nnoremap dd g0dg $

时间:2014-05-02 05:14:49

标签: vim emacs emulation

我是一个心灵的vi / vim,但我经常使用LaTeX而且我非常喜欢AUCTeX预览,所以直到最近我一直在使用带有毒蛇的emacs,但我现在正在尝试邪恶。但我当然不是emacs专家。

emacs中的视线模式对于AUCTeX预览来说非常棒,因为当预览图像被激活时,线条长度全部被修复,但如果每个段落实际上只有一条长线,那么在视线模式下它们看起来都很棒预览图像是否已激活。

让我烦恼的一件事是,像'j'和'dd'这样的viper命令只能在“逻辑行”上工作,而不能在屏幕行上工作。在vim中,人们会使用'gj'而不是'j',这确实是邪恶的作用。但是'dd'没有等价物。

我遇到了the answer to a SO question addressing this for vim,它似乎可以解决这个问题:nnoremap dd g0dg $。确实在邪恶中键入“右侧”(即使使用数字前缀)也可以正常工作。

但是我不能在邪恶的文档中看到如何实现这种重映射。我见过detailed answer to a general SO question about evil但是它的所有建议和例子都展示了如何将一个键序列映射到一个已定义的邪恶函数。我看不到任何示例,其中现有的邪恶键序列被重新映射到另一个(可能更长的)现有邪恶键序列。

我想我可以用一系列现有的邪恶函数替换映射的“右侧”,但我不确定如何做到这一点。或者我可以使用基本的emacs密钥重新映射,但我担心这会干扰邪恶的不同模式/状态,或者只是根本不起作用。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:2)

这是一个基本功能,可以完成我认为你想要的功能(请注意,它没有做其他很好的事情,比如Vim / Evil提供的计数;请使用evil-define-command)。如果你试图将它映射到gdd,你会破坏一些键绑定,所以作为一种解决方法,你可以将它映射到gD(或任何你喜欢的):

(defun evil-delete-visual-line ()
  (interactive)
  (let ((beg (progn (beginning-of-visual-line) (point)))
        (end (progn (end-of-visual-line) (point))))
    (evil-delete beg end)))

(define-key evil-normal-state-map "gD" 'evil-delete-visual-line)