我最近在使用Vim很长一段时间之后开始使用Emacs(和那里的许多其他人一样),我个人觉得Vim移动键和文本对象是编辑器可以拥有的最好的东西之一.我听说过使用不同的插件在Emacs中模拟这些功能,但是在互联网上阅读了一些之后,我很困惑.
我特别遇到了三种模式:Viper,Vimpulse和Evil.有人可以帮助我了解如何使用这些模式来实现近乎完美的Vim仿真吗?我需要安装所有这三个吗?他们之间有什么区别?谢谢.
我已经开始使用emacs,而且我发现虽然emacs的编辑器特定功能比vi更好,但vi的文本操作方法比emacs更好(并且更容易控制 - 小指!).
似乎viper-mode是每个编辑器的两个最佳部分的结合,对于想要一个完整编辑器的人来说是理想的解决方案.
但在我开始花时间学习emacs环境中的vi命令之前,我想知道为什么看起来好像很多人都没有使用viper-mode.在使用它一段时间之后我会发现什么东西会导致我切换到普通的emacs或vi?
我正在从vi移动到emacs,并且使用viper和vimpulse,当我C-w C-w进入窗口并且无法使用相同的命令返回原始窗口时它会变得非常烦人,因为另一个缓冲区(可能是帮助缓冲区)不是在Viper模式下.我怎样才能解决这个问题?
我尝试将其他模式添加到viper配置中,并使用默认情况下使用挂钩启动viper模式:
(add-to-list viper-vi-state-mode-list 'help-mode) (add-hook 'help-mode (lambda () (setq viper-mode t)))
但这些命令都没有奏效.实际上,第一个产生了以下错误:
Warning (initialization): An error occurred while loading `/home/konrad/.emacs.d/init.el': Wrong type argument: symbolp, (fundamental-mode ...
除此之外C-w C-w,我也错过了无法使用hjkl进行导航.有没有办法重用viper设置的键绑定,而不是为每种模式重新绑定它们?
我想按下;进入ex模式,而: 不是有人知道如何配置vimpulse来实现这一目标吗?谢谢!
我是一个长期的vim用户,试图切换到emacs.
我正在使用viper-modeemacs,我一直在键入ESC(退出插入模式),然后键入一个键(比方说j).我打字很快,经常同时打它们.Emacs然后认为我正在击中META-j并运行一个我不打算的功能.
我喜欢使用选项作为元,并且当我在毒蛇时,不关心ESC曾经是元.
任何人都有关于如何在毒蛇模式下完全禁用ESC为meta的建议?
这是我尝试过的一些相关选项.这些都没有解决问题.
(setq viper-no-multiple-ESC t)
(setq viper-translate-all-ESC-keysequences t)
(setq viper-fast-keyseq-timeout 0)
Run Code Online (Sandbox Code Playgroud) 我正在使用 Colemak 键盘布局,并且想使用Vimpulse从此处尝试 Vim 布局。然而,布局重新映射了命令前缀 Vim 键“c”和“d”等,并且这些键似乎无法使用标准 Viper 键重新映射命令轻松重新映射。它们都映射到 viper 键盘映射中的“viper-command-argument”,实际的按键功能似乎是在 Viper 源代码的其他地方定义的。
有没有比分叉 Viper 源的本地副本并在其中重新定义魔术前缀键值更简单的方法将前缀命令重新绑定到其他键?
我很长时间用户,最近发现emacs有viper-mode,提供两全其美(至少对我而言).然而有一件事真的困扰我,因为我主要是在python编码,并且标签和空格的混合是一个大问题.
当处于插入模式时,我想在按TAB时插入viper-shift-width空格而不是TAB.我怎样才能做到这一点?我想一些简单的lisp函数/设置就是解决方案.
我没有在viper模式设置中找到任何可以执行此操作的内容.
编辑:
我有(setq-default indent-tabs-mode nil).emacs但是当我在viper-mode中处于插入模式(在插入模式的vim meaing中)时这不起作用
我正在尝试学习 emacs,获取 vi 自定义键绑定。
使用Viper模式,重新绑定密钥的正确方法是什么?(我使用Colemak 键盘布局(而不是 qwerty),因此必须更改 n->j 等内容)但希望它能在 viper 模式下工作。
来自 GNU.org 上的按键绑定指南: http://www.gnu.org/software/emacs/manual/html_node/viper/Key-Bindings.html
它说放入 .viper 文件的命令是:
(define-key viper-vi-global-user-map "\C-v" 'scroll-down)
Run Code Online (Sandbox Code Playgroud)
它对我不起作用......事实上我什至不确定我是否有“define-key”功能......
M-x define-key [No match]
Run Code Online (Sandbox Code Playgroud)
我不确定我的 emacs 版本是否可以使用“define-key”?
这有效,但在 viper 模式下无效
(global-set-key "n" "j")
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激。这是我第一天使用 Emacs,让 Colemak 和 Viper 模式正常工作很痛苦。
感谢您的帮助...
我使用的是蝰蛇,我想改变它C-c和C-g原来的emacs的功能.我可以重新绑定C-g使用(define-key viper-vi-global-user-map "C-g" 'keyboard-quit),但我怎么能重新绑定C-c,因为它是一个前缀键?
谢谢!