是否可以重新绑定数字.例如,"5"是"$","%"是"5"?
在evil-maps.el中,数字定义如下.
(define-key evil-motion-state-map "1" 'digit-argument)
(define-key evil-motion-state-map "2" 'digit-argument)
...
Run Code Online (Sandbox Code Playgroud)
我尝试了@ChillarAnand的答案
(add-hook 'evil-mode-hook 'evil-mode-bindings)
(defun evil-mode-bindings ()
"Bind symbols to digits."
(define-key key-translation-map (kbd "%") "5")
(define-key key-translation-map (kbd "*") "8")
)
(define-key evil-normal-state-map "5" 'evil-beginning-of-line)
(define-key evil-normal-state-map "8" 'evil-end-of-line)
Run Code Online (Sandbox Code Playgroud)
但Shift-5仍然表现不佳5,同样如此8.是否有可能为上面的配置修复它?
同样代表@tarblet解决方案.
我作为测试用的是一个序列Shift-5,G.
我无法弄清楚如何为邪恶模式重新绑定:b和:e命令Emacs.谷歌也没有多大帮助.
我已经尝试了,(define-key evil-normal-state-map ":b" 'helm-buffers-list)但是拧下:用于输入命令的键.
目前我正在使用(define-key evil-normal-state-map ",b" 'helm-buffers-list),(define-key evil-normal-state-map ",e" 'find-file)但我更喜欢将它们打开:b,:e因此使用真正的Vim时动作也是一样的.
请不要提及重新映射到Vim ,b和,eVim.:-)
我使用邪恶,得到了
(defcustom evil-shift-width 4
"The offset used by \\<evil-normal-state-map>\\[evil-shift-right] \
and \\[evil-shift-left]."
:type 'integer
:group 'evil)
Run Code Online (Sandbox Code Playgroud)
我想将evil-shift-width设置为缓冲区局部缩进宽度(变量indent).
(add-hook 'after-change-major-mode-hook
(function (lambda ()
(setq evil-shift-width indent))))
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我要地图j k的邪恶运动是gj和gk分别.这是人们通常在vim中做的常见重映.我怎么能在Emacs中做到这一点.我想我只需要找到这些对应于gj和gk运动的邪恶函数是如何命名的.
我想在Evil中创建一个新的文本对象.例如,文本对象iw将仅选择包含连字符的字符串子集.我希望新的文本对象匹配任何非空格字符的单词.到目前为止我得到的是:
(evil-define-text-object evil-inner-space (count &optional beg end type)
"Select inner space."
:extend-selection nil
(evil-regexp-range count beg end type "[ \n]" " " t))
(define-key evil-inner-text-objects-map " " 'evil-inner-space)
Run Code Online (Sandbox Code Playgroud)
此代码无法正确匹配行尾的单词.由于\n,它适用于行开头的单词.
我尝试了很多不起作用的东西.对我来说麻烦的是,当某些东西不起作用时,我不知道它是由于错误的正则表达式还是由于邪恶正则表达式范围的限制.例如,使用\ s-报告错误,这似乎是Evil中的限制.
在emacs evil-mode中,如何绑定一个键序列,以便它预先填充evil-mode ex命令行并定位光标?在vim中,我可以这样做:
nnoremap g/r :%s//g<left><left>
Run Code Online (Sandbox Code Playgroud)
在emacs中,我试过这个(和几个变种):
(define-key evil-normal-state-map "g/" nil)
(define-key evil-normal-state-map (kbd "g/r")
(lambda () (interactive) (kbd ":%s/")))
Run Code Online (Sandbox Code Playgroud)
它没有任何效果,我在尝试键映射后看不到任何消息.
看起来emacs曾经有一个有用的功能evil-ex-read-command,它将输入发送到evil-mode命令行:
https://github.com/magnars/.emacs.d/blob/master/site-lisp/evil/evil-ex.el#L554
但是这个功能似乎不再可用了.
在vim中,我在.vimrc中有这个:
" Easy window navigation
map <C-h> <C-w>h
map <C-j> <C-w>j
map <C-k> <C-w>k
map <C-l> <C-w>l
Run Code Online (Sandbox Code Playgroud)
如何在邪恶模式下获得简易窗口导航?
此外,在vim"+将复制到我的系统剪贴板?这似乎在emacs中不起作用.
$ emacs --version
Run Code Online (Sandbox Code Playgroud)
GNU Emacs 24.3.1版权所有(C)2013 Free Software Foundation,Inc.GNU Emacs绝对不提供任何担保.您可以根据GNU通用公共许可证的条款重新分发Emacs的副本.有关这些问题的更多信息,请参阅名为COPYING的文件.
$ cat .emacs
Run Code Online (Sandbox Code Playgroud)
;;
;; Package manager and better repos
(require 'package)
(add-to-list 'package-archives
'("marmalade" .
"http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(package-initialize)
(setq backup-directory-alist `(("." . "~/.emacs.d/saves")))
;; Indents, tab as spaces
(setq-default indent-tabs-mode nil)
(setq default-tab-width 2)
;; evil-mode
(eval-after-load "evil"
'(progn
(define-key evil-normal-state-map (kbd "C-h") 'evil-window-left)
(define-key evil-normal-state-map …Run Code Online (Sandbox Code Playgroud) 我是一个铁杆vim用户.随着邪恶模式和spacemacs的引入,我正在从vim过渡到emacs.我经常在开发服务器中编辑我的代码(由于我无法解释的原因),我必须在终端模式下运行我的编辑器.有一点,我在Emacs(在vim中存在)中缺少的是在编码时显示编译/ lint错误等有用信息的装订线.Emacs确实有GUI的边缘模式,但不适用于终端.是否有特殊原因要避免在emacs终端中使用条纹模式?
我的要求是查看一列中的所有错误(我正在使用flycheck),以便很容易浏览代码以找到有错误的行.flycheck有三种突出错误的方法(行/列/符号).我想要突出显示行中的符号,但同时,我希望在代码的左侧或右侧看到一个列,它标记带有某些符号的错误/警告的行.Flycheck在启用条纹模式时执行此操作,但终端没有条纹模式.有没有办法在终端中获得这个?
我正在使用组织模式捕获来创建小笔记和待办事项.我也在使用邪恶模式.
我喜欢做的是当我进入捕获时自动进入插入模式.我已经尝试在钩子中添加钩子到org-capture-mode-hook并运行(evil-insert),但这不起作用.还有什么我可以尝试的吗?
谢谢!
西蒙
问:在 Emacs 中,如何为 中的文本对象创建特定于模式的键绑定evil?
可以在特定模式下将键绑定到特定状态(正常、插入等),如下例所示:
(evil-define-key 'normal org-mode "a" 'some-command)
Run Code Online (Sandbox Code Playgroud)
但是,我不清楚如何以特定于模式的方式将密钥绑定到evil-outer-text-objects-map(或其-inner-对应项)。作为替代方案,也不清楚如何通过模式挂钩以缓冲区本地方式绑定这些映射中的键。
它看起来不evil-local-set-key会这样做,因为它期望一个状态(正常、插入等)作为其第一个参数,而这与此任务无关。
还不清楚如何local-set-key在这种情况下使用,因为它需要一个键和一个命令作为参数,但不将映射作为参数。