Xcode 快捷键使用方法

于 Mac 工作效率的文章一直层出不穷,然而并非所有内容都适合程序员,比如某些 Unix 命令,其实使用频率非常低。作为一名iOS 程序员,我尝试着和大家分享一些能够切实提高我们开发效率的小技巧。

我是无鼠标主义者,任何需要鼠标的操作在我看来都是极为低效的。Mac 的触摸板非常好用,但是我依然在尝试避免使用触摸板。因为双手保持在键盘区域更适合编程。虽然触摸板不可能被避免(比如浏览网页),但我希望至少在 Xcode 中不使用它。

所以,本文会和大家分享一些系统级快捷键,Xcode、Chrome、iTerm 等应用中的快捷键,以及常用的工具,比如 Vim 和 Git 的使用。这里面除了 Xcode,其他都是通用的,如果你不是 iOS 开发者,建议自行查阅相关 IDE 的快捷键。

综述

一部分人可能认为,快捷键用起来很别扭,还不如自己用触摸板(鼠标)来得方便。然而你应该意识到,使用触摸板的效率是有上限的,当你熟悉快捷键后,速度远比现在快得多。

这一点,在学习 vim 时尤其重要。你不应该关注完成一个命令需要多久,而应该关注需要多少个按键,你可以认为在形成肌肉记忆后,按键的思考时间为0。所以我们得出一个结论:

总时间 = 按键数 * 一个常数(表示单次按键时间)。

因此,评价 vim 中一个操作的优劣,通常用高尔夫分数来表示,它表示完整这个操作需要几次按键。

但是!!!快捷键是提高效率的手段,但它不会提高代码质量。既要坚持学习,也要适可而止,万万不可主次颠倒。

关键不在于你学会了多少快捷键,而是你有多少工作是可以通过快捷键来完成的,目的在于提高效率,仅此而已。

一种很强大,通用的的方法是 设置->键盘->快捷键->应用快捷键 然后精确匹配应用中的快捷键名,这个通常需要配合 CheatSheet 来实现。当你觉得某个快捷键不好用的时候,也可以通过这种方式去修改。

应用内快捷键替换

在设置快捷键时,需要避免全局快捷键和应用快捷键冲突,同时也要注意一些常用操作在多个应用内保持统一。

我建议将 Caps Lock 与 Ctrl 键对调,因为大小写切换键的使用频率非常低,而 Ctrl 的使用频率显然高于他,因此有必要将大小写切换键放到最不容易触碰到的地方。

下面我会介绍一些我常用的快捷键,它们大部分是系统自带的,也有少部分是我自己定义的。

入门

绝大多数应用的 preference 页面都是通过Command + ,打开的。

剪切,复制,粘贴,撤销,重做,光标移动到行首和行尾,这些基础操作必须掌握。

Snap

相信很多人都有这样的烦恼:如果应用不全屏,那么桌面上显示的窗口太多,每个窗口的显示内容不够多。如果应用全屏,那么切换应用是很麻烦的。要么用Command + Tab,要么手势滑动,但无论哪一种,时间复杂度都是 O(n)。有没有 O(1) 的方法呢?答案是使用神器:snap

我主要是以应用首字母或者关键字母作为标识,配合Command + Shift前缀:

Xcode:J

Chrome:K

iTerm:L

Markdown 相关:M

QQ:Y

微信:U

SoureceTree:S

MacVim:V

Evernote:E

Dock:1/2/3/4:因工作需要,我常用的是备忘录,邮件,日历,设置

;这个键我没有启用,但它实际上是一个非常方便的快捷键。

Dock 栏应用的选择需要一定的权衡。显然最快的方式是只按Command,但是这种全局快捷键会导致大量冲突。而Controll和Option键又非常难以触摸,所以我选择了Command + Shift作为所有应用的快捷键前缀。

注意避免字母o和f,它们在 Xcode 中有特殊的用处。

Snap

Xcode 快捷键

编译、运行,Instruments,单元测试,暂停这些基本操作就不解释了。我把一些自认为比较有用的命令加粗表示:

文件编辑

Command + [和Command + ]左右缩进

Command + Option + [和Command + Option + ]当前行上下移动

Command + Option + Left/Right折叠、展开当前代码段

文件跳转

Command + Control + Up/Down.h 和 .m 文件切换

Command + Control + Left/Right浏览历史切换

Command + Control + j跳转到定义处

Command + Option + j跳转到目录搜索

Command + 1/2/3/4/5跳转到左侧不同的栏目

Comannd + Shift + o文件搜索

搜索

Comannd + Shift + f全局搜索

Command + e搜索当前选中单词

Command + g搜索下一个

tab

Command + t新建一个 tab

Command + w关闭当前 tab

Command + Shift + [和Command + Shift + ]左右切换 tab

Scheme

Command + shift + ,编辑 scheme,选择 debug 或 release

调试

F6:跳到下一条指令

F7:跳进下一条指令(它会跳进内部函数,具体效果自测)

Control + Command + y继续运行

其他

Command + k删除 Console 中的内容

Command + d打开/关闭 控制台(修改系统快捷键:Show/Hide Debug Area)

获得更全面的快捷键介绍,请参考:这篇文章

Vim 常用快捷键

入门指南:简明 Vim 练级攻略

在我的 git 上有一份 Vim 的配置,先下载到~/目录下,然后建立软连接:

rm .vimrcln-s.vim/.vimrc .vimrc

推荐一个 Mac 上的 Vim 软件:MacVim,它比在终端中看 Vim 更好一些。打开 MacVim 后,输入以下命令安装插件:

:BundleInstall

进入输入模式

i在光标前面进入输入模式,a在光标后面进入输入模式

I在行首进入输入模式,A在行尾进入输入模式

o在下一行行首进入输入模式,O在上一行行首进入输入模式

文本操作

yy复制当前行,dd剪切当前行,p复制。注意这里用的都是 Vim 自带的剪贴板。

U撤销,**Ctrl + r重做

x删除光标所在的字母

cae或bce删除当前光标所在的单词,并进入编辑模式

数字+命令重复命令 n 次,比如3dd

光标移动

^到本行开头,$到本行末尾

/111或111G跳转到 111 行,gg第一行,G最后一行。

e移动到本单词的结尾,w移动到下一个单词的开头。

%匹配当前光标所在的括号(小括号,中括号,大括号)

*查找与光标所在单词相同的下一个单词

f + 字母跳转到字母第一次出现的位置,2fb跳转到字母 b 第二次出现的位置

t + 字母跳转到字母第一次出现的前一个位置,3ta跳转到字母 a 第三次出现的前一个位置

f 和 t 换成大写,表示反方向移动查找。dt + 字母表示删除字母前的所有内容。

举一反三

比如0y$,从行首复制到行尾,ye表示

从当前位置复制到本单词结尾。

a或i

action可以是任何的命令,比如d,y,v等

object可以是w单词,p段落,或者是一个具体的字母

a和i的区别在于i表示 inner,只作用于内部,不含两端。

思考一下,有多少种方法可以删除光标当前所在单词?

答案:diw,daw,caw,ciw,bce,bde。

思考一下他们的原理,后两者不太推荐(有可能跳到前一个单词)。

如果是选中当前单词呢?

除了以上基本语法,我还在整理一套 《Vim 基础练习题》,等完成之后会与大家分享。

实战

给多行添加注释:

v:进入可视状态

nj: 向下选择n行, 或者输入Shift ]跳到段尾

Command + /添加注释

在 MacVim 中,git blame无比清晰:

Snap

Chrome

Command + l焦点移动到地址栏

Shift + Option + Delete/Left向左删除/选中一个单词(可以自定义为Ctrl-w)

Command + y搜索历史

Command + 数字快速切换 tab

Command + shift + []左右切换 tab

Command + t/w新建/关闭 tab

Command + e/g搜索选中,前往下一个,或者用Command + f和回车。

可以看到,Chrome 中涉及到 tab 的操作应该与 Xcode 尽量保持一致。

iTerm2

Ctrl w删除前一个单词

Command + r清除屏幕上的内容

Command + t/w打开/关闭 tab

Command + 数字切换到第 n 个 tab

双击选中一个单词,自动复制

iTerm 可以通过Command + shift + []来左右切换 tab,也可以通过Command + Left/Right切换,后者其实是多余的,而且不符合习惯。

所以参考这篇文章或者自行查阅 Google,在 Preference->Keys->Global Shortcut Keys 中,设置好Command加上左右键,和删除键的对应操作。

Git

git的本质是对指针的操作。

掌握git的add、commit、stash、pull、fetch这些基本操作

理解什么是本地仓库,什么是远程仓库,理解多人开发时的merge和conflict的概念

掌握分支的使用,掌握checkout命令的使用

熟练掌握git rebase操作,包括git rebase -i和git rebase --onto,掌握一种 git 工作流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容