vim - emacs 等同于 vim 重新映射,例如:nnoremap dd g0dg$

标签 vim emacs emulation

我本质上是一个 vi/vim 人,但我经常使用 LaTeX,而且我真的很喜欢 AUCTeX Preview,所以直到最近我一直在使用 emacs 和 viper,但我现在正在尝试邪恶。不过,我肯定不是 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 键重新映射,但我担心这会干扰邪恶的不同模式/状态,或者根本不起作用。

有人有什么想法吗?

最佳答案

这是一个基本函数,可以实现我认为您想要的功能(请注意,它不会执行其他好的功能,例如 Vim/Evil 提供的计数;使用 evil-define-command 来实现) 。如果您尝试将其映射到gdd,您会破坏一些键绑定(bind),因此作为解决方法,您可以将其映射到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)

关于vim - emacs 等同于 vim 重新映射,例如:nnoremap dd g0dg$,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23421227/

相关文章:

vim - 在 Vim 中如何重新包装一列中的文本?

HTML 字符串 vim 语法高亮

Emacs 组织模式 : refile using the goto-interface

vim 部分重复命令

regex - Linux 或 Vim : How to find and replace matched string, 除了最后一个字符?

search - 使用扩展区域在 emacs 中更好地搜索

list - 如何在 Emacs Lisp 中将格式错误的 plist 转换为对列表?

Android:Eclipse 不会将新版本的应用程序推送到模拟器

x86 - 可以虚拟化并运行 Linux 内核的最简单的架构

javascript - 6502 仿真增强型基本无限循环 $C000 至 $E0ED