我是一名 Mac 用户,我决定学习 Emacs。我有 减少手部疲劳并提高准确性 控制键大写锁定 钥匙应该交换。我该如何在 Leopard 中执行此操作?

另外,在终端中我必须使用 ESC键 调用元的键。有没有办法让 alt/option 键来调用元?

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

有帮助吗?

解决方案

交换CTRL和CAPS LOCK

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

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

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

其他提示

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

⌥ + ← - 左移一个字
⌥ + → - 向右移一个字
⌥ + 删除 - 返回删除一个字
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

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

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

祝你好运

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

一旦我明白了 - 这对我来说很有用!

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

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

  • 向上翻页:病毒浓度
  • 向下翻页:ESC-V

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

向下翻页

双击“向下翻页”选项进行编辑。改变 行动“将字符串发送到 shell” 并输入 \026 作为字符串。保存。

向上翻页

双击“向上翻页”按钮进行编辑。改变 行动“将字符串发送到 shell” 并输入 \033v 作为字符串。保存。

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

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

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

(setq mac-command-modifier'ctrl)

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

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

  • 使用左右 Shift 键也可 ( 和 ) 进行快速打字。
  • 将您的 fn 键或其他键重新映射为“超级”键。
  • 使大写锁定受控制,但只能使用另一个键。就其本身而言,它就是逃避。

阅读精彩文章: 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 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])

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

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

我已经创建了一套相当全面的绑定此处,以便在外面使用

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

相反,我一直在使用 Microsoft Natural Ergonomic Keyboard 4000 超过7年:它有非常肥胖,定位良好的Ctrl和Alt键,以及下载其驱动程序”开始“和“应用程序”这些键很容易重新映射到Mac Cmd键,这也很容易让人沮丧。

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top