如何使用不同的键在Emacs中选择文本?

时间:2013-12-29 14:55:22

标签: emacs elisp key-bindings textselection

所以我创建了一个单独的辅助模式,用于有效地移动光标,选择文本等等(非常类似于Chris Done's god-mode)。但不知何故,当按下那些替代箭头键时,我无法让Emacs选择文字。当我尝试时,光标移动但没有被选中。这是我的绑定:

(define-key movecursor-keymap (kbd "i") 'previous-line)
(define-key movecursor-keymap (kbd "j") 'left-char)
(define-key movecursor-keymap (kbd "l") 'right-char)
(define-key movecursor-keymap (kbd "k") 'next-line)
(define-key movecursor-keymap (kbd "I") 'previous-line)
(define-key movecursor-keymap (kbd "J") 'left-char)
(define-key movecursor-keymap (kbd "L") 'right-char)
(define-key movecursor-keymap (kbd "K") 'next-line)

当然我启用了:

(setq shift-select-mode t)
; and also
(transient-mark-mode 1)

使用这些键启用班次选择需要做什么?

1 个答案:

答案 0 :(得分:2)

显示您的代码。 描述您期望发生的事情以及发生的事情。 (总是)

一个疯狂的猜测是你没有在你的命令结束时将deactivate-mark设置为nil(或者其他任何希望该区域处于活动状态的代码所遵循的代码)。

在您执行任何操作之后以及任何期望该区域仍处于活动状态的代码之前,请添加(setq deactivate-mark nil)。请记住,命令循环在每个命令后停用标记。

更新

好的,所以你想使用班次选择。

(global-set-key (kbd "i") (lambda (arg) (interactive "^p") (previous-line arg)))

(global-unset-key (kbd "I"))

等。参见:

  • (emacs) Shift Selection
  • (elisp) Using Interactive

前者告诉您,如果您希望转移I来选择文字,则必须取消设置i