Mac OS X Leopard密钥绑定上的Emacs

我是Mac用户,我决定学习Emacs。 我已经读过 ,为了减less手部疲劳和提高准确性,应该交换CTRLCAPS LOCK键。 我如何在Leopard中做到这一点?

另外,在terminal中,我必须使用ESC键来调用元。 有什么办法让alt / option键来调用meta吗?

更新:虽然控制键现在更容易点击,但元键也经常使用,以至于在我的MacBook和Apple键盘上的位置也值得关注。 事实上,我发现控制键实际上比较容易打开,所以我已经重新映射了控制键来充当一个元键。 有没有人有更好/更标准的解决scheme?

交换CTRL和CAPS LOCK

  1. 进入系统首选项
  2. 进入键盘和鼠标首选项窗格
  3. 键盘选项卡上,单击修改器键…
  4. 交换大写locking控制的操作

替代文字

使用ALT / OPTION作为META

  1. 在菜单栏中,单击terminal
  2. 点击偏好…
  3. 在“ 设置”选项卡下,转到“ 键盘”选项卡
  4. 选中“ 使用选项”作为元键

替代文字

而已! 你应该成为一名Emacs大师!

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

+ – 向左移动一个单词
+ – 向右移动一个单词
+ 删除 – 删除一个单词
Shift + + 删除 – 删除一个单词
+ – 向上移动一段
+ – 向下移动一段
+ – 移至当前行的开始
+ – 移至当前行的结尾
Shift +上面的任何一项都可以select适当的数量

点击然后拖动 – select文本
双击,然后拖动 – select文本,包装到单词结束
三击,然后拖动 – select文本,包装到段落结束

Shift +用鼠标select文本 – 添加到select(连续)
+用鼠标select文本 – 添加到select(非连续)
+拖动 – select矩形区域(非连续)
+ +拖动 – 添加矩形区域select
拖动select – 移动文本
+拖动select – 复制文字

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 – 粘贴以前用CtrlK删除的文本

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

另外,您会注意到Mac OS X中的大部分文本input字段已经接受emacs按键(^行首,^ E行结尾,^ P,^ N,^ K,^ Y等)

祝你好运

我真的很喜欢凯尔克罗宁提供的答案,但我想补充一点 – 确保您select适当的键盘来工作。 如果您的笔记本电脑中插有外接键盘,则会出现一个额外的下拉框,您需要为两个键盘(或至less是外接键盘)执行此操作。 下面的屏幕截图显示了“select键盘”对话框 – 我select了“联合Mac键盘”,这是MacBook的方式说GoldTouch外部键盘 – 默认是内置键盘。
显示“选择键盘”对话框的屏幕截图

一旦我明白了 – 这对我来说很好!

如果你通过ssh连接使用emacs,或者通过不在本地计算机上的机器,页面向上/向下翻页button会滚动浏览terminal缓冲区 – 根据我的经验,这不是太有帮助。

您可以设置您的页面和向上翻页button发送适当的命令到emacs。 在emacs中,你可以像这样滚动emacs缓冲区:

  • 上一页:Ctl-v
  • Page Down:Esc-v

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

向下翻页

双击“下翻页”选项进行编辑。 将操作更改为“将string发送到shell”并input\ 026作为string。 保存。

上一页

双击“向上翻页”button进行编辑。 将操作更改为“将string发送到shell”并input\ 033v作为string。 保存。

不知道你是否完全结婚,从terminal使用Emacs,但另一种select是使用碳Emacs(我最喜欢的)和Aquamacs(非常像Mac)。 Carbon Emacs使用meta的命令键,这很好,因为只需按住Control和Command键,而不是先按下Esc键,就可以执行Control-Meta命令。

另外,如果你是一个认真的Emacs用户,我完全推荐你得到一个适合编程的键盘(这是一个完全可以自行编程的键盘)。 我使用Kinesis,这是一点钱,但他们非常耐用,相当不错。

就我个人而言,我已经设置大写locking行为像系统偏好上的命令,然后在我的emacs init.el文件具有:

(setq mac-command-modifier'ctrl)

这让我可以在大多数osx应用程序中使用大写字母locking作为命令,并在emacs中作为控制。 对我来说足够好。

这个线程是在5年前开始的,没有提到ns-win.el或者构build--with-ns 。 以下是截至2013年10月Emacs Trunk中可用的所有关键绑定(开箱即用)。当然,您也可以创build自己的绑定。 就我个人而言,我有一个init.el ,所有我的密钥绑定可以通过OSX上的Parallels与Windows XP一起使用,也可以与OSX本身一起使用。 由于用户可以定义他/她自己的键盘快捷方式, 除非使用不包含Command键的键盘, 否则我不认为需要在系统首选项(使用Apple US键盘)中重新映射键盘。 但是,我会扔掉我内藏的轨迹点的IBM藏起来的键盘吗? 当然不是。 :)我带着我的IBM点击键盘进入下一个生活。 任何手部紧张最有可能是由不当的手腕/arm/肘部位置引起的,而不是通过打击控制与大写locking。 准确性通过练习得到提高,并在老板的帮助下看着你的肩膀,看看你是如何来的 – 即有点压力更有效率:)

 (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 [?\sC] 'ns-popup-color-panel) (define-key global-map [?\sD] 'dired) (define-key global-map [?\sE] 'edit-abbrevs) (define-key global-map [?\sL] 'shell-command) (define-key global-map [?\sM] 'manual-entry) (define-key global-map [?\sS] 'ns-write-file-using-panel) (define-key global-map [?\sa] 'mark-whole-buffer) (define-key global-map [?\sc] 'ns-copy-including-secondary) (define-key global-map [?\sd] 'isearch-repeat-backward) (define-key global-map [?\se] 'isearch-yank-kill) (define-key global-map [?\sf] 'isearch-forward) (define-key global-map [?\sg] 'isearch-repeat-forward) (define-key global-map [?\sh] 'ns-do-hide-emacs) (define-key global-map [?\sH] 'ns-do-hide-others) (define-key global-map [?\sj] 'exchange-point-and-mark) (define-key global-map [?\sk] 'kill-this-buffer) (define-key global-map [?\sl] 'goto-line) (define-key global-map [?\sm] 'iconify-frame) (define-key global-map [?\sn] 'make-frame) (define-key global-map [?\so] 'ns-open-file-using-panel) (define-key global-map [?\sp] 'ns-print-buffer) (define-key global-map [?\sq] 'save-buffers-kill-emacs) (define-key global-map [?\ss] 'save-buffer) (define-key global-map [?\st] 'ns-popup-font-panel) (define-key global-map [?\su] 'revert-buffer) (define-key global-map [?\sv] 'yank) (define-key global-map [?\sw] 'delete-frame) (define-key global-map [?\sx] 'kill-region) (define-key global-map [?\sy] 'ns-paste-secondary) (define-key global-map [?\sz] '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]) 

你的喜悦刚刚开始。 其他技巧包括:

  • 使用左右shift键也可以(和)快速打字。
  • 重新映射您的FN键或另一个键是“超级”。
  • 使大写locking受控制,但只能用另一个键。 本身就是逃避。

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

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

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

我已经创build了一个相当全面的绑定在这里terminal使用。

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

相反,我已经使用了微软自然人体工程学键盘4000超过7年:它有非常肥胖,定位良好的Ctrl和Alt键, 下载它的驱动程序后 ,“开始”和“应用程序”键被简单地重新映射到Mac Cmd键,这也很胖,很容易郁闷。

为了避免emacs的人机工程学问题,我已经训练了自己使用Ctrl,Alt和Cmd,就像我们使用Shift一样 – 使用与input实际关键字相反的手来压制它们。 (也就是说,我只是按照原样离开Caps Lock。)

我设置大写locking来控制系统首选项,我有以下在我的init.el设置命令元和选项超:

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

我想推荐2个软件Seil和Karabiner 。 通过简单地安装Seil并按照软件中的说明,您应该能够实现您想要的。 从我的经验来看,Karabiner更强大。 我有一个日本的键盘,其布局是不同于正常的。 我有一些片段重新映射键盘上的两个额外的键到F18和F19的其他用途。 你可以使用相同的语法编辑你的“private.xml”文件来做更多的事情。