我知道有一个现有的快捷方式可以执行此操作,但我想将 home 键映射到行首而不是缓冲区首。
我尝试将其放入我的 ~/.emacs 文件中,但似乎它仍然以某种方式被覆盖:
(global-set-key [kp-home] 'beginning-of-line) ; [Home]
(global-set-key [home] 'beginning-of-line) ; [Home]
就此而言,如果有人知道在 FreeBSD 上使用 emacs 时默认键绑定设置在哪里,我可能能够修改该文件(如果它覆盖了我的 .emacs)。
编辑:我正在使用 FreeBSD 8.2 并通过 SSH/PuTTY 访问它。
这是我的完整 .emacs 文件(如您所见,没有什么太疯狂的东西):
(keyboard-translate ?\C-h ?\C-?)
(add-to-list 'load-path "/home/sam/programs/go/go/misc/emacs/" t)
(require 'go-mode-load)
(global-set-key [kp-home] 'beginning-of-line) ; [Home]
(global-set-key [home] 'beginning-of-line) ; [Home]
答案1
尝试一下:
(global-set-key (kbd "<home>") 'move-beginning-of-line)
答案2
我用:
(define-key global-map [home] 'beginning-of-line)
你的方法似乎也应该有效。另一个建议可以帮助你调试问题。点击 Ch k [home],它应该会显示 home 绑定到什么,这也可能提供设置它的线索。
答案3
您可以像这样使用智能家居钥匙:https://stackoverflow.com/questions/145291/smart-home-in-emacs/
完整代码:
(defun my-smart-beginning-of-line ()
"Move point to beginning-of-line. If repeat command it cycle
position between `back-to-indentation' and `beginning-of-line'."
(interactive "^")
(if (and (eq last-command 'my-smart-beginning-of-line)
(= (line-beginning-position) (point)))
(back-to-indentation)
(beginning-of-line)))
(global-set-key [home] 'my-smart-beginning-of-line)