如何使 [home] 转到行首而不是缓冲区的开头?

如何使 [home] 转到行首而不是缓冲区的开头?

我知道有一个现有的快捷方式可以执行此操作,但我想将 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)

相关内容