emacs - GNU emacs : setting keybindings to highlight text with shift key

标签 emacs lisp key-bindings

我正在尝试设置一些键绑定(bind)以使用 Shift 键突出显示文本。我可以使用 pc-selection-mode,但这并不能提供我想要的所有按键绑定(bind)。例如,我希望能够通过按 Shift-Ctrl-down 来移动标记整个段落,我可以在大多数 MS 文本编辑器中执行此操作,但是 pc-selection-mode 不允许您执行此操作。

我找到了这个website其中有 shift_mark.el我可以使用该文件来设置我想要的所有键绑定(bind)。我已放入 .xemacs/init.el 文件来加载 shift_mark.el

这是错误:

Warning (initialization): An error occurred while loading `/home/theory/phrkaj/\
.xemacs/init.el':

Wrong type argument: arrayp, (shift right)

所以我用 --debug-init 运行 Emacs 来尝试找出问题。这是调试器得出的结果:

Debugger entered--Lisp error: (wrong-type-argument arrayp (shift right))
  signal(wrong-type-argument (arrayp (shift right)))
  global-set-key((shift right) shift-mark-forward-char)
  eval-buffer(#<buffer  *load*<3>> nil "/home/theory/phrkaj/shift_mark.el" nil t)  ; Reading at buffer position 1476
  load-with-code-conversion("/home/theory/phrkaj/shift_mark.el" "/home/theory/phrkaj/shift_mark.el" nil nil)
  load("~/shift_mark.el")
  eval-buffer(#<buffer  *load*<2>> nil "/home/theory/phrkaj/.xemacs/init.el" nil t)  ; Reading at buffer position 25
  load-with-code-conversion("/home/theory/phrkaj/.xemacs/init.el" "/home/theory/phrkaj/.xemacs/init.el" nil nil)
  load("/home/theory/phrkaj/.xemacs/init.el" nil nil t)
  load-file("/home/theory/phrkaj/.xemacs/init.el")
  eval-buffer(#<buffer  *load*> nil "/home/theory/phrkaj/.emacs" nil t)  ; Reading at buffer position 253
  load-with-code-conversion("/home/theory/phrkaj/.emacs" "/home/theory/phrkaj/.emacs" t t)
  load("~/.emacs" t t)
  #[nil "^H\205\264^@   \306=\203^Q^@\307^H\310Q\2027^@ \311=\2033^@\312\307\313\314#\203#^@\315\2027^@\312\307\313\316#\203/^@\317\2027^@\315\2027^@\307^H\320Q^Z\321^S\322\n\321\211#\210^K\321=\203_^@\323\324\325\307^H\326Q!\"^\\322\f\$
  command-line()
  normal-top-level()

以下是 shift_mark.el 文件的一部分,它定义了向前一个字符的突出显示:

(defun shift-mark-forward-char ()
  (interactive)
  (shift-mark 'forward-char))

(global-set-key '(shift right) 'shift-mark-forward-char)

感谢任何帮助。

最佳答案

在 GNU Emacs 下,按键绑定(bind)应该如下所示

(global-set-key [(shift right)] 'shift-mark-forward-char)

([…] 构造一个文字数组)。但我怀疑你的做法是错误的。您运行的是 GNU Emacs、XEmacs 还是两者都运行?什么版本?除非您运行的是非常旧的版本,否则 pc-selection-mode 应该在 GNU Emacs 下执行您想要的操作,并且在 XEmacs 下不需要任何设置。如果您同时运行 GNU Emacs 和 XEmacs,则可以在 .emacs 中使用以下代码:

(defvar running-xemacs (string-match "XEmacs" emacs-version))
(if (not running-xemacs)
    (pc-selection-mode 1))

关于emacs - GNU emacs : setting keybindings to highlight text with shift key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4164659/

相关文章:

emacs - Emacs 中 yas/choose-value 的替代方案

emacs - 如何在跳过 .svn 目录的同时递归搜索 emacs 中的文件

loops - for循环方案

sorting - 从 lisp 中的输入流中读取多项式

java - 如何防止按下 Tab 键时 JTable 返回第一行?

vim - linux 上 <D> 的默认键绑定(bind)是什么? Mac有这个绑定(bind)到Command

java - 如何更改 ActionListener 的聚焦 JButton 的默认键绑定(bind)?

Emacs 备份自动禁用版本控制文件

emacs - 我是否需要了解Emacs Lisp才能使用GNU/Emacs

lisp - 在 Common Lisp 中存储日期