作者Neisseria (Neisseria)
站内MAC
标题[教学] 在 Mac OS X 中编辑文件时好用的快速键
时间Sun Jun 13 17:05:23 2010
自己无意间发现原来 OS X 里有几个 emacs 风格的快速键,後来在一些
国外的部落格看到可以藉着简单的设定档来扩充快速键,但国内较少看到
此类文章,故分享之。
========================= 本文开始 =============================
在用 Macbook 做文字编辑时,因为笔电键盘上没有 HOME、END、PageUp、PageDn
等好用按键,所以在文件里要移动游标时,就只能靠方向键来逐字移动,感觉非常冏。
其实,OS X 上有更便捷的方法。
mac 的文字编辑软体有内建 emacs 风格的快捷键,但很多功能预设未启动。如果要
启动,则要修改或创造 $HOME/Library/KeyBindings/DefaultKeyBinding.dict 档案,
记得要将该档案存为纯文字档。
推荐使用 nano 或者是 vim 等终端机底下的文字编辑软体,即会以纯文字档来储存。
$ mkdir ~/Library/KeyBindings
$ nano ~/Library/KeyBindings/DefaultKeyBinding.dict
或是用 mac 的文字编辑(TextEdit),但是要选择「制作纯文字格式」。
在 DefaultKeyBinding.dict 文件中,^ 代表 control 键,在文件中为 C;
~ 代表 option 键,在文件中为 M。另外要注意文件中的 :(冒号)和
;(分号)都是不可省略的。
{
"~f"="moveWordForward:"; /* M-f */
"~b"="moveWordBackward:"; /* M-b */
"~v"="pageUp:"; /* M-v */
"^v"="pageDown:"; /* C-v */
"~<"="moveToBeginningOfDocument:"; /* M-< */
"~>"="moveToEndOfDocument:"; /* M-> */
"~d"="deleteWordForward:"; /* M-d */
"~^h"="deleteWordBackward:"; /* C-M-h */
"^k"="deleteToEndOfLine:"; /* C-k */
"^u"="deleteToBeginningOfLine:"; /* C-u */
"^y"="yank:"; /* C-y */
"^j"="insertNewline:"; /* C-j */
"^/"="undo:"; /* C-/ */
"^_"="undo:"; /* C-_ */
"^g"="cancelOperation:"; /* C-g */
"~c"="capitalizeWord:"; /* M-c */
"~u"="uppercaseWord:"; /* M-u */
"~l"="lowercaseWord:"; /* M-l */
"^t"="transpose:"; /* C-t */
"~t"="transposeWord:"; /* M-t */
"~/"="complete:"; /* M-/ */
/* mark point stuff */
"^@"="setMark:"; /* C-@ */
"^ "="setMark:"; /* C-space */
"^w"="deleteToMark:"; /* C-w */
"^x" = {
"u"="undo:"; /* C-x u */
"k"="performClose:"; /* C-x k */
"^f"="openDocument:"; /* C-x C-f */
"^s"="saveDocument:"; /* C-x C-s */
"^w"="saveDocumentAs:"; /* C-x C-w */
"^x"="swapWithMark:"; /* C-x C-x */
"^m"="selectToMark:"; /* C-x C-m */
};
}
其中 "^x" = { } 里的代表复合快捷键,以 "^x" 及 "^f" 为例,先按 Ctrl + x
再按 Ctrl + f。其他可以类推。
档案修改好後,先登出再重新进入,即可使用 emacs 风格快捷键。要注意如果档案
有错误的话,即无法使用,这时请检查 DefaultKeyBinding.dict 这个档案,修改後
再重新登出及登入。
在 Page、Keynote 或文字编辑(TextEdit)中都可以使用 emacs 风格快速键。但是
Microsoft Word 或 PowerPoint 中则无法使用。
设定完後,即可使用以下的 emacs 风格快速键。注意其中混有少数 readline 模式
快速键,和标准 emacs 快速键略有不同,但操作後觉得顺手,故如此设置。
实际用起来,觉得移动和删除相关快速键最好用,至於区块操作则因不会反白而显得
不够直觉好用,其他实用性普通,给各位参考。
移动
C-f: 向右移动一个字元(character)
C-b: 向左移动一个字元
M-f: 向右移动一个单字(word)
M-b: 向左移动一个单字
C-p: 向上移动一行
C-n: 向下移动一行
C-a: 移到行首
C-e: 移到行尾
C-v: 向下移动一页
M-v: 向上移动一页
M-<: 移到档首
M->: 移到档尾
删除
C-/: 回复一次动作(readline 模式)
C-_: 回复一次动作
C-x, u: 回复一次动作
C-d: 向右删除一个字元
M-d: 向右删除一个单字
C-h: 向左删除一个字元(readline 模式)
C-M-h: 向左删除一个单字(readline 模式)
C-k: 自游标删至行尾
C-u: 自游标删至行首(readline 模式)
编辑
C-j: 插入空白行
C-y: 贴上删除的内容
区块操作
C- (空白键): 设置区块起始点(mark)
C-@: 设置区块起始点
C-w: 删除区块
C-x, C-x: 将游标位置置换到区块尾端
C-x, C-m: 选取区块
其他
M-u: 将单字转为大写字母
M-l: 将单字转为小写字母
M-c: 将单字字首转为大写字母
========================= 本文结束 =============================
如果想要再扩充或改良快速键,看来会牵涉到 cocca 程式设计。但实在是没有 cocca
程式设计的经验,故希望有经验的大大可以提供意见。
希望这篇文章对你有用。:-)
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.70.250.105
1F:→ Jerrynet:fn+上下左右 不就是home,end,pageup,pagedown 吗@@? 06/13 17:08
2F:推 croft:我是用keyremap4macbook 将r-option改成fn键 06/13 17:15
3F:→ croft:这样 home,end,pageup,pagedown 只要用一只手就可以解决 06/13 17:16
4F:→ uranusjr:..........Cocoa 软体中 cmd 加上下左右 = 上一页/下一页 06/13 17:58
5F:→ uranusjr:移到行头/移到行尾, 根本不是用 PgUp/PgDn/Home/End 06/13 17:58
6F:推 skkle:我比较好奇的是,程式结束的时候会问要不要存档或取消 06/13 19:01
7F:→ uranusjr:return 确定, esc 取消, cmd d 不要储存 06/13 19:02
8F:→ skkle:大部分这个时候按tab都没有办法移动焦点,只好用滑鼠… 06/13 19:02
9F:→ skkle:u大回得也太快了吧(汗)原来是cmd+d喔!!感谢~~~ 06/13 19:04
10F:推 dm4:在 Cocoa 软体里,移到行首/尾是 ctrl+a/e 06/13 20:10
11F:推 dryman:可否借转至Editor版? 06/13 22:43
※ 编辑: Neisseria 来自: 114.136.188.11 (06/14 11:22)
※ 编辑: Neisseria 来自: 114.136.188.11 (06/14 11:22)
※ Neisseria:转录至看板 Editor 06/14 11:38
※ 编辑: Neisseria (112.104.128.230), 12/24/2018 06:43:36