我是 Mac 用户,我决定学习 Emacs。我已经读过,为了减少手部压力并提高准确性,应该交换CTRL和键。CAPS LOCK我如何在 Leopard 中执行此操作?
此外,在终端中,我必须使用ESC密钥来调用元。有没有办法让 alt/option 键来调用元?
更新:虽然现在控制键更容易按下,但元键也经常使用,它在我的 MacBook 和 Apple 键盘上的位置也值得关注。事实上,我发现控制键实际上更容易被击中,所以我重新映射了我的控制键以充当元键。有没有人有更好/更标准的解决方案?
我是 Mac 用户,我决定学习 Emacs。我已经读过,为了减少手部压力并提高准确性,应该交换CTRL和键。CAPS LOCK我如何在 Leopard 中执行此操作?
此外,在终端中,我必须使用ESC密钥来调用元。有没有办法让 alt/option 键来调用元?
更新:虽然现在控制键更容易按下,但元键也经常使用,它在我的 MacBook 和 Apple 键盘上的位置也值得关注。事实上,我发现控制键实际上更容易被击中,所以我重新映射了我的控制键以充当元键。有没有人有更好/更标准的解决方案?
交换 CTRL 和 CAPS LOCK
使用 ALT/OPTION 作为 META
就是这样!您应该正在成为 Emacs 大师的路上顺利!
⌥</kbd> + ←</kbd> - move left one word
⌥</kbd> + →</kbd> - move right one word
⌥</kbd> + delete - back delete one word
Shift + ⌥</kbd> + delete - foward delete one word
⌥</kbd> + ↑</kbd> - move up one paragraph
⌥</kbd> + ↓</kbd> - move down one paragraph
⌘</kbd> + ←</kbd> - move to start of current line
⌘</kbd> + →</kbd> - move to end of current line
Shift + any of the above extend selection by appropriate amount
单击然后拖动 - 选择文本
双击然后拖动 - 选择文本,换行到单词结尾
三击然后拖动 - 选择文本,换行到段落结尾
Shift+用鼠标选择文本 - 添加到选择(连续)
⌘</kbd> + Select text with mouse - add to selection (non-contiguous)
⌥</kbd> + Drag - select rectangular area (non-contiguous)
⌘</kbd> + ⌥</kbd> + drag - add rectangular area to selection
Drag selection - move text
⌥</kbd> + drag selection - copy text
Ctrl+ A- 移动到当前段落的开头
Ctrl+ B- 向左移动一个字符
Ctrl+ D- 向前删除
Ctrl+ E- 移动到当前段落的末尾
Ctrl+ F- 向右移动一个字符
Ctrl+ H- 删除
Ctrl+ K- 删除当前段落的其余部分
Ctrl+ L- 将窗口居中在当前line
Ctrl+ N- 下移一行
Ctrl+ O- 在光标后插入新行
Ctrl+ P- 上移一行
Ctrl+ T- 转置(交换)两个周围的字符
Ctrl+ V- 移到结尾,然后左移一个字符
Ctrl+ Y- 粘贴之前删除的文本Ctrl-K
添加Option到Ctrl+F或Ctrl+B以一次移动一个单词而不是一个字符。
另一个答案非常完整,但另外我要提到我只是将大写锁定键设置为第二个控制键,而不是交换它们。
此外,您会注意到 Mac OS X 中的大多数文本输入字段已经接受 emacs 击键(^A 行首、^E 行尾、^P、^N、^K、^Y 等)
祝你好运
我真的很喜欢 Kyle Cronin 提供的答案,但我想补充一件事 - 确保您选择合适的键盘以使其正常工作。如果您的笔记本电脑插入了外接键盘,那么还有一个额外的下拉框,您需要为两个键盘(或至少为您的外接键盘)执行此操作。下面的屏幕截图显示了“选择键盘”对话框——我选择了“联合 Mac 键盘”,这是 MacBook 对 GoldTouch 外接键盘的说法——默认是内置键盘。
一旦我想通了——这对我很有用!
如果您通过 ssh 连接或通过不在本地计算机上的机器使用 emacs,则向上/向下翻页按钮会滚动终端缓冲区 - 根据我的经验,并没有太大帮助。
您可以设置向下翻页和向上翻页按钮以将适当的命令发送到 emacs。在 emacs 中,您可以像这样滚动浏览 emacs 缓冲区:
因此,要让终端将这些命令发送到 emacs,请按照上面的说明更改 Meta 的 Alt 键。但是,不要设置“将选项用作元”选项,而是找到“向下翻页”和“向上翻页”选项。
向下翻页
双击“向下翻页”选项进行编辑。将Action更改为“将字符串发送到 shell”并输入\026作为字符串。保存。
向上翻页
双击“向上翻页”按钮进行编辑。将Action更改为“将字符串发送到 shell”并输入\033v作为字符串。保存。
不确定您是否完全习惯从终端使用 Emacs,但另一种选择是使用 Carbon Emacs(我最喜欢的)和 Aquamacs(非常类似于 Mac)。Carbon Emacs 对 meta 使用 command 键,这很好,因为您可以通过按住 Control 和 Command 来执行 Control-Meta 命令,而不是先按 Escape 然后按 Control 键序列。
此外,如果您是一个认真的 Emacs 用户,我强烈建议您使用适合编程的键盘(即完全可自行重新编程的键盘)。我用的是 Kinesis,它有点小钱,但它们非常耐用而且非常好。
就我个人而言,我设置了 caps lock 以在系统首选项上表现得像命令,然后在我的 emacs init.el 文件上具有:
(setq mac-command-modifier 'ctrl)
这让我可以在大多数 osx 应用程序中使用 caps lock 作为命令,并在 emacs 中作为控件使用。对我来说效果很好。
你的快乐才刚刚开始。其他技巧包括:
阅读http://stevelosh.com/blog/2012/10/a-modern-space-cadet/上的优秀文章,了解更多信息。
该线程是 5 年前开始的,没有提及ns-win.el
或 build --with-ns
。以下是截至 2013 年 10 月 Emacs Trunk 中可用的所有键绑定(开箱即用)。当然,您可以创建自己的。就我个人而言,我init.el
的所有键绑定都可以通过 OSX 上的 Parallels 与 Windows XP 一起使用,也可以与 OSX 本机一起使用。由于用户可以定义他/她自己的键盘快捷键,我认为不需要在系统偏好设置中重新映射键盘(使用 Apple 美国键盘),除非使用不包括 Command 键的键盘。但是,我会扔掉那些内置了 trackpoint 的 IBM clicky 键盘吗?当然不是。:) 我带着我的 IBM clicky 键盘进入下一个生活。任何手部拉伤很可能是由不正确的手腕/手臂/肘部位置引起的,而不是由于击中控制与大写锁定。通过练习提高准确性,并在老板的帮助下看着你的肩膀,看看你的进展如何——即,提高工作效率的一点压力:)
(define-key global-map [?\s-,] 'customize)
(define-key global-map [?\s-'] 'next-multiframe-window)
(define-key global-map [?\s-`] 'other-frame)
(define-key global-map [?\s-~] 'ns-prev-frame)
(define-key global-map [?\s--] 'center-line)
(define-key global-map [?\s-:] 'ispell)
(define-key global-map [?\s-?] 'info)
(define-key global-map [?\s-^] 'kill-some-buffers)
(define-key global-map [?\s-&] 'kill-this-buffer)
(define-key global-map [?\s-C] 'ns-popup-color-panel)
(define-key global-map [?\s-D] 'dired)
(define-key global-map [?\s-E] 'edit-abbrevs)
(define-key global-map [?\s-L] 'shell-command)
(define-key global-map [?\s-M] 'manual-entry)
(define-key global-map [?\s-S] 'ns-write-file-using-panel)
(define-key global-map [?\s-a] 'mark-whole-buffer)
(define-key global-map [?\s-c] 'ns-copy-including-secondary)
(define-key global-map [?\s-d] 'isearch-repeat-backward)
(define-key global-map [?\s-e] 'isearch-yank-kill)
(define-key global-map [?\s-f] 'isearch-forward)
(define-key global-map [?\s-g] 'isearch-repeat-forward)
(define-key global-map [?\s-h] 'ns-do-hide-emacs)
(define-key global-map [?\s-H] 'ns-do-hide-others)
(define-key global-map [?\s-j] 'exchange-point-and-mark)
(define-key global-map [?\s-k] 'kill-this-buffer)
(define-key global-map [?\s-l] 'goto-line)
(define-key global-map [?\s-m] 'iconify-frame)
(define-key global-map [?\s-n] 'make-frame)
(define-key global-map [?\s-o] 'ns-open-file-using-panel)
(define-key global-map [?\s-p] 'ns-print-buffer)
(define-key global-map [?\s-q] 'save-buffers-kill-emacs)
(define-key global-map [?\s-s] 'save-buffer)
(define-key global-map [?\s-t] 'ns-popup-font-panel)
(define-key global-map [?\s-u] 'revert-buffer)
(define-key global-map [?\s-v] 'yank)
(define-key global-map [?\s-w] 'delete-frame)
(define-key global-map [?\s-x] 'kill-region)
(define-key global-map [?\s-y] 'ns-paste-secondary)
(define-key global-map [?\s-z] 'undo)
(define-key global-map [?\s-|] 'shell-command-on-region)
(define-key global-map [s-kp-bar] 'shell-command-on-region)
;; (as in Terminal.app)
(define-key global-map [s-right] 'ns-next-frame)
(define-key global-map [s-left] 'ns-prev-frame)
(define-key global-map [home] 'beginning-of-buffer)
(define-key global-map [end] 'end-of-buffer)
(define-key global-map [kp-home] 'beginning-of-buffer)
(define-key global-map [kp-end] 'end-of-buffer)
(define-key global-map [kp-prior] 'scroll-down-command)
(define-key global-map [kp-next] 'scroll-up-command)
;; Allow shift-clicks to work similarly to under Nextstep.
(define-key global-map [S-mouse-1] 'mouse-save-then-kill)
(global-unset-key [S-down-mouse-1])
(不是符合人体工学的键盘,但我真的很喜欢按键的行程和感觉,而且 Control 键、Caps Lock 被交换了)。
我在这里创建了一套相当全面的绑定,以供在终端之外使用。
就个人而言,由于没有正确的控制键,我无法使用 mac 笔记本电脑键盘。
相反,我已经使用Microsoft Natural Ergonomic Keyboard 4000超过 7 年了:它真的很胖,Ctrl 和 Alt 键的位置很好,下载驱动程序后,“开始”和“应用程序”键很容易重新映射到 Mac Cmd键,也很胖,容易郁闷。
为了避免 emacs 人体工程学问题,我训练自己使用 Ctrl、Alt 和 Cmd,就像我们使用 Shift 一样——用与键入实际键的手相反的手按下它们。(也就是说,我只是保持 Caps Lock 不变。)
我将 caps lock 设置为控制系统首选项,并且在我的 init.el 中有以下内容将命令设置为 meta 并将选项设置为 super:
(custom-set-variables
'(ns-alternate-modifier (quote super))
'(ns-command-modifier (quote meta)))