我是Mac用户,我决定学习Emacs。我read为了减少手部压力并提高准确性,应交换 CTRL 和 CAPS LOCK 键。我如何在Leopard中执行此操作?
此外,在终端我必须使用 ESC 键来调用meta。有没有办法让alt / option键代替调用meta?
更新虽然控制键现在更容易被击中,但元键也经常使用,以至于它在我的MacBook和Apple键盘上的位置也值得关注。事实上,我发现控制键实际上更容易被击中,所以我重新映射了我的控制键以充当元键。有没有人有更好/更标准的解决方案?
答案 0 :(得分:160)
交换CTRL和CAPS LOCK
将ALT / OPTION用作META
就是这样!你应该很好地成为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外接键盘的方式 - 默认是内置键盘。
有一次我想出来 - 这对我很有用!
答案 4 :(得分:9)
如果您通过ssh连接使用emacs,或通过本地计算机以外的计算机使用emacs,则页面向上/向下翻页按钮会滚动浏览终端缓冲区 - 根据我的经验,这不太有帮助。
您可以设置页面向下和向上翻页按钮,以将相应的命令发送到emacs。在emacs中,您可以像这样滚动浏览emacs缓冲区:
因此,要让终端将这些命令发送到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)
你的快乐才刚刚开始。其他技巧包括:
阅读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)
(不是一个符合人体工程学的键盘,但我真的很喜欢按键的旅行和感觉,并且控制键,大写锁定被交换)。
答案 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)