我在MacBook Pro(macOS Sierra)上使用GNU Emacs,在init.el中我将Cmd-ijkl键绑定到emacs移动命令:
(global-set-key (kbd "s-j") 'backward-char)
(global-set-key (kbd "s-l") 'forward-char)
(global-set-key (kbd "s-i") 'previous-line)
(global-set-key (kbd "s-k") 'next-line)
当我在按住Shift键的同时使用这些绑定时,它们可以根据需要扩展和收缩区域。我最近决定绑定Cmd-h和Cmd-;分别为行首和行动结束。
(global-set-key (kbd "s-h") 'move-beginning-of-line)
(global-set-key (kbd "s-;") 'move-end-of-line)
我也取消了Cmd-的现有绑定:所以它不会与Shift-Cmd-的使用发生冲突;选择到行尾。
(global-unset-key (kbd "s-:"))
不幸的是,这还不足以证明这一点。虽然Shift-Cmd-h确实选择了行的开头,但Shift-Cmd-;给出错误s-: is undefined
。我该怎么做才能获得理想的行为?
答案 0 :(得分:1)
说实话,我也不知道为什么你的方式不正常。这是一个临时的解决方法。希望有人能提出更合适的解决方案。
除了你已添加的内容之外,你可能想为“s - :”提供额外的键绑定。
(defun my-mark-end-of-line ()
(interactive)
(set-mark-command)
(move-end-of-line))
(global-set-key (kbd "s-:") 'my-mark-end-of-line)
此外,您也可以使用内置命令标记到句子结尾:
(global-set-key (kbd "s-:") 'mark-end-of-sentence)
修改强>
有一件有趣的事情是,当您查看关键绑定C-h
的{{1}}帮助时,会将其翻译为C-N
。 C-n
也是如此:它被翻译为s-N
。但是,如果您执行s-n
,则不会将其翻译为C-h k s-:
。