Mac OS X上的Emacs Leopard键绑定

时间:2008-10-02 15:12:58

标签: macos emacs keyboard-shortcuts key-bindings

我是Mac用户,我决定学习Emacs。我read为了减少手部压力并提高准确性,应交换 CTRL CAPS LOCK 键。我如何在Leopard中执行此操作?

此外,在终端我必须使用 ESC 键来调用meta。有没有办法让alt / option键代替调用meta?

更新虽然控制键现在更容易被击中,但元键也经常使用,以至于它在我的MacBook和Apple键盘上的位置也值得关注。事实上,我发现控制键实际上更容易被击中,所以我重新映射了我的控制键以充当元键。有没有人有更好/更标准的解决方案?

13 个答案:

答案 0 :(得分:160)

交换CTRL和CAPS LOCK

  1. 进入系统偏好设置
  2. 输入键盘&鼠标偏好设置面板
  3. 键盘标签中,点击修改键......
  4. 交换大写锁定控制的操作。
  5. alt text

    将ALT / OPTION用作META

    1. 在菜单栏中,点击终端
    2. 点击偏好设置...
    3. 设置标签下,转到键盘标签
    4. 选中标有使用选项作为元键
    5. 的复选框

      alt text

      就是这样!你应该很好地成为Emacs大师!

答案 1 :(得分:45)

作为参考,以下是用于移动文本的键绑定:

+ - 左移一个字
+ - 向右移动一个字
+ 删除 - 返回删除一个字
Shift + + delete - foward删除一个字
+ - 向上移动一段
+ - 向下移动一段
+ - 移至当前行的开头
+ - 移至当前行的结尾
Shift +以适当数量的上述任何扩展选择

单击然后拖动 - 选择文本
双击然后拖动 - 选择文本,换行到单词结束
三击然后拖动 - 选择文本,换行到段落结束

Shift +用鼠标选择文字 - 添加到选区(连续)
+用鼠标选择文字 - 添加到选区(非连续)
+拖动 - 选择矩形区域(非连续)
+ +拖动 - 添加矩形区域以供选择
拖动选择 - 移动文本
+拖动选择 - 复制文本

Ctrl + A - 移至当前段落的开头
Ctrl + B - 向左移动一个字符
Ctrl + D - 转发删除
Ctrl + E - 移至当前段落的结尾
Ctrl + F - 向右移动一个字符
Ctrl + H - 删除
Ctrl + K - 删除当前段落的剩余部分 Ctrl + N - 向下移动一行
Ctrl + O - 在光标后插入新行
Ctrl + P - 向上移动一行
Ctrl + T - 转置(交换)两个周围的字符
Ctrl + V - 移动到结束,然后离开一个字符
Ctrl + Y - 粘贴以前用 Ctrl 删除的文字 - K

答案 2 :(得分:11)

另一个答案非常完整,但另外我提到我只是设置大写锁定 键入第二个控制键而不是交换它们。

另外,您会注意到Mac OS X中的绝大多数文本输入字段 已接受emacs键击(^行的开头,行的^ E行,^ P,^ N,^ K,^ Y等)

祝你好运

答案 3 :(得分:11)

我非常喜欢Kyle Cronin提供的答案,但我想补充一点 - 确保选择合适的键盘才能实现。如果您的笔记本电脑上插有外接键盘,则会有一个额外的下拉框,您需要为两个键盘(或至少为外接键盘)执行此操作。下面的屏幕截图显示了“选择键盘”对话框 - 我选择了“联合Mac键盘”,这是MacBook说GoldTouch外接键盘的方式 - 默认是内置键盘。
Screen shot showing "Select Keyboard" dialog

有一次我想出来 - 这对我很有用!

答案 4 :(得分:9)

如果您通过ssh连接使用emacs,或通过本地计算机以外的计算机使用emacs,则页面向上/向下翻页按钮会滚动浏览终端缓冲区 - 根据我的经验,这不太有帮助。

您可以设置页面向下和向上翻页按钮,以将相应的命令发送到emacs。在emacs中,您可以像这样滚动浏览emacs缓冲区:

  • Page Up:Ctl-v
  • Page Down:Esc-v

因此,要让终端将这些命令发送到emacs,请按照上面的说明更改Meta的Alt键。但是,不要将“使用选项设置为元”选项,而是找到“向下翻页”和“向上翻页”选项。

Page Down

双击“向下翻页”选项进行编辑。将操作更改为“将字符串发送到shell”,然后输入 \ 026 作为字符串。保存它。

Page Up

双击“向上翻页”按钮进行编辑。将操作更改为“将字符串发送到shell”,然后输入 \ 033v 作为字符串。保存它。

答案 5 :(得分:7)

不确定你是否完全嫁接了从终端使用Emacs,但另一个选择是使用Carbon Emacs(我最喜欢的)和Aquamacs(非常像Mac)。 Carbon Emacs使用meta的命令键,这很好,因为你可以通过按住Control和Command来执行Control-Meta命令,而不是首先按下escape然后按下控制键序列。

此外,如果您是一名认真的Emacs用户,我会建议您使用适合编程的键盘(这是一个完全可以自行编程的键盘)。我使用Kinesis,它有点钱,但它们非常耐用且相当不错。

答案 6 :(得分:4)

就我个人而言,我已经设置大写锁定以在系统首选项上执行类似命令,然后在我的emacs init.el文件中有:

(setq mac-command-modifier'ctrl)

这让我在大多数osx应用程序中使用大写锁定作为命令,在emacs中作为控件使用。对我来说效果很好。

答案 7 :(得分:4)

你的快乐才刚刚开始。其他技巧包括:

  • 使用左右shift键也可以(和)快速输入。
  • 将您的fn键或其他键重新映射为" super"。
  • 使大写锁定可以控制,但只能使用其他键。它本身就是逃避。

阅读http://stevelosh.com/blog/2012/10/a-modern-space-cadet/上的优秀文章,了解更多信息。

答案 8 :(得分:3)

此主题是在5年前启动的,没有提及ns-win.el或构建--with-ns。以下是截至2013年10月Emacs Trunk中可用的所有键绑定(开箱即用)。当然,您可以创建自己的。就个人而言,我有一个init.el,我的所有键绑定都可以通过OSX上的Parallels与Windows XP一起使用,也可以与OSX一起使用。由于用户可以定义他/她自己的键盘快捷键,我认为不需要在系统首选项(使用Apple US键盘)中重新映射键盘,除非使用不包含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])

答案 9 :(得分:2)

(不是一个符合人体工程学的键盘,但我真的很喜欢按键的旅行和感觉,并且控制键,大写锁定被交换)。

http://matias.ca/osxkeyboard/index.php

答案 10 :(得分:0)

我已经创建了一套相当全面的绑定here,用于终端外的

就个人而言,由于缺少正确的控制键,我无法使用Mac笔记本键盘。

相反,我已经使用Microsoft Natural Ergonomic Keyboard 4000超过7年了:它有非常胖的,定位良好的Ctrl和Alt键,在downloading its drivers后,“开始”和“应用程序”键是简单地重新映射到Mac Cmd键,这也很胖,容易沮丧。

为了避免emacs符合人体工程学的问题,我已经训练自己使用Ctrl,Alt和Cmd,就像我们使用Shift一样 - 用键入实际键的手对着它们。 (也就是说,我只是按原样保留Caps Lock。)

答案 11 :(得分:0)

我设置大写锁定来控制系统偏好,我在init.el中有以下命令将命令设置为meta,选项设置为super:

(custom-set-variables
 '(ns-alternate-modifier (quote super))
 '(ns-command-modifier (quote meta)))

答案 12 :(得分:0)

我想推荐2个软件 SeilKarabiner。只需安装Seil并按照软件中的说明操作,您就可以实现您想要的效果。根据我的经验,Karabiner更强大。我有一个日语键盘,其布局与普通键盘不同。我有一些snippet将键盘上的两个额外键重新映射到F18和F19以供其他用途。您可以使用相同的语法编辑" private.xml"提交更多文件。