【问题标题】:How to get easy nav window motions in evil-mode?如何在邪恶模式下获得简单的导航窗口运动?
【发布时间】:2014-06-27 23:45:28
【问题描述】:

在 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

如何在邪恶模式下获得简单的窗口导航?

另外,在 vim 中“+ 会复制到我的系统剪贴板?这似乎在 emacs 中不起作用。

$ emacs --version

GNU Emacs 24.3.1 版权所有 (C) 2013 Free Software Foundation, Inc. GNU Emacs 附带绝对没有保证。您可以重新分发副本 GNU 通用公共许可证条款下的 Emacs。更多 有关这些事项的信息,请参阅名为 COPYING 的文件。

$ cat .emacs

;;

;; 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 (kbd "C-j") 'evil-window-down)
     (define-key evil-normal-state-map (kbd "C-k") 'evil-window-up)
     (define-key evil-normal-state-map (kbd "C-l") 'evil-window-right)))
(require 'evil)
(evil-mode 1)
;(setcdr evil-insert-state-map nil)
;(define-key evil-insert-state-map [escape] 'evil-normal-state)

;; Fun stuff
(require 'jabber-autoloads)
(require 'jabber)

【问题讨论】:

    标签: emacs evil-mode


    【解决方案1】:

    您可以将要使用的键绑定添加到evil-normal-state-map

    (eval-after-load "evil"
      '(progn
         (define-key evil-normal-state-map (kbd "C-h") 'evil-window-left)
         (define-key evil-normal-state-map (kbd "C-j") 'evil-window-down)
         (define-key evil-normal-state-map (kbd "C-k") 'evil-window-up)
         (define-key evil-normal-state-map (kbd "C-l") 'evil-window-right)))
    

    将代码包装到eval-after-load 中是必要的,以确保在调用define-keyevil-normal-state-map 已定义/可用。

    如果您想让相同的绑定在其他“状态”(例如“运动”状态)中也可用,只需将它们添加到相应的键映射中,如上所示(在“运动”状态的情况下,对应的地图称为evil-motion-state-map)。


    要让 Emacs 使用系统剪贴板,请尝试将 x-select-enable-clipboard 设置为非 nil 值:

    (setq x-select-enable-clipboard t)
    

    还有一些使用剪贴板的特定命令用于杀死和拉拽。来自文档:

    • clipboard-kill-region:

      杀死该区域,并将其保存在 X 剪贴板中。

    • clipboard-kill-ring-save:

      复制区域杀死环,并保存在X剪贴板中。

    【讨论】:

    • M-x evil-window-up 有效,但 C-k 等无效。设置 x-select-enable-clipboard 后,当我现在尝试 yank 文本时出现错误。
    • 由于此解决方案适用于我的系统,除非您提供更多信息,否则我无法帮助您。请将您的 .emacs 文件的内容添加到您的问题中。在点击C-k 时是否出现错误?另外,您在尝试提取文本时遇到的错误是什么?我列出的替代命令 (clipboard-kill-region/clipboard-kill-ring-save) 有效吗?
    • 保存在上面。我已经在几个地方尝试了 require evil-mode 。只是扔飞镖盲目折叠。
    • clipboard-kill-region 不会将其保存到操作系统剪贴板。我在 Mac 上的终端中。
    • pbcopy 提供“Emacs 的 OS X 剪贴板集成”。通过M-x package-install RET pbcopy RET安装,并从你的.emacs中删除与x-select-enable-clipboard相关的配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2017-06-18
    • 2012-05-01
    相关资源
    最近更新 更多