本文是视频直播的文字整理,录像能够在:优酷 上看到html
关于 Mac 工做效率的文章一直层出不穷,然而并不是全部内容都适合程序员,好比某些 Unix 命令,其实使用频率很是低。做为一名初级 iOS 程序员,我尝试着和你们分享一些可以切实提升咱们开发效率的小技巧。git
我是无鼠标主义者,任何须要鼠标的操做在我看来都是极为低效的。Mac 的触摸板很是好用,可是我依然在尝试避免使用触摸板。由于双手保持在键盘区域更适合编程。虽然触摸板不可能被避免(好比浏览网页),但我但愿至少在 Xcode 中不使用它。程序员
因此,本文会和你们分享一些系统级快捷键,Xcode、Chrome、iTerm 等应用中的快捷键,以及经常使用的工具,好比 Vim 和 Git 的使用。这里面除了 Xcode,其余都是通用的,若是你不是 iOS 开发者,建议自行查阅相关 IDE 的快捷键。github
一部分人可能认为,快捷键用起来很别扭,还不如本身用触摸板(鼠标)来得方便。然而你应该意识到,使用触摸板的效率是有上限的,当你熟悉快捷键后,速度远比如今快得多。shell
这一点,在学习 vim 时尤为重要。你不该该关注完成一个命令须要多久,而应该关注须要多少个按键,你能够认为在造成肌肉记忆后,按键的思考时间为0。因此咱们得出一个结论:编程
总时间 = 按键数 * 一个常数(表示单次按键时间)。swift
所以,评价 vim 中一个操做的优劣,一般用高尔夫分数来表示,它表示完整这个操做须要几回按键。vim
可是!!!快捷键是提升效率的手段,但它不会提升代码质量。既要坚持学习,也要适可而止,万万不可主次颠倒。xcode
关键不在于你学会了多少快捷键,而是你有多少工做是能够经过快捷键来完成的,目的在于提升效率,仅此而已。bash
一种很强大,通用的的方法是 设置->键盘->快捷键->应用快捷键 而后精确匹配应用中的快捷键名,这个一般须要配合 CheatSheet 来实现。当你以为某个快捷键很差用的时候,也能够经过这种方式去修改。
在设置快捷键时,须要避免全局快捷键和应用快捷键冲突,同时也要注意一些经常使用操做在多个应用内保持统一。
我建议将 Caps Lock 与 Ctrl 键对调,由于大小写切换键的使用频率很是低,而 Ctrl 的使用频率显然高于他,所以有必要将大小写切换键放到最不容易触碰到的地方。
下面我会介绍一些我经常使用的快捷键,它们大部分是系统自带的,也有少部分是我本身定义的。
Command + ,
打开的。相信不少人都有这样的烦恼:若是应用不全屏,那么桌面上显示的窗口太多,每一个窗口的显示内容不够多。若是应用全屏,那么切换应用是很麻烦的。要么用 Command + Tab
,要么手势滑动,但不管哪种,时间复杂度都是 O(n)。有没有 O(1) 的方法呢?答案是使用神器:snap
我主要是以应用首字母或者关键字母做为标识,配合 Command + Shift
前缀:
J
K
L
M
Y
U
S
V
E
1/2/3/4
:因工做须要,我经常使用的是备忘录,邮件,日历,设置;
这个键我没有启用,但它其实是一个很是方便的快捷键。Dock 栏应用的选择须要必定的权衡。显然最快的方式是只按 Command
,可是这种全局快捷键会致使大量冲突。而 Controll
和 Option
键又很是难以触摸,因此我选择了 Command + Shift
做为全部应用的快捷键前缀。
注意避免字母 o
和 f
,它们在 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
搜索下一个Command + t
新建一个 tabCommand + w
关闭当前 tabCommand + Shift + [
和 Command + Shift + ]
左右切换 tabCommand + shift + ,
编辑 scheme,选择 debug 或 releaseF6
:跳到下一条指令 F7
:跳进下一条指令(它会跳进内部函数,具体效果自测) Control + Command + y
继续运行
Command + k
删除 Console 中的内容Command + d
打开/关闭 控制台(修改系统快捷键:Show/Hide Debug Area)得到更全面的快捷键介绍,请参考:这篇文章
入门指南:简明 Vim 练级攻略 在个人 git 上有一份 Vim 的配置,先下载到 ~/
目录下,而后创建软链接:
rm .vimrc
ln -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 第三次出现的前一个位置dt + 字母
表示删除字母前的全部内容。<start position><command><end position>
好比 0y$
,从行首复制到行尾,ye
表示 从当前位置复制到本单词结尾。<action>a<object>
或 <action>i<object>
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
无比清晰:
Command + l
焦点移动到地址栏Shift + Option + Delete/Left
向左删除/选中一个单词(能够自定义为 Ctrl-w
)Command + y
搜索历史Command + 数字
快速切换 tabCommand + shift + []
左右切换 tabCommand + t/w
新建/关闭 tabCommand + e/g
搜索选中,前往下一个,或者用 Command + f
和回车。能够看到,Chrome 中涉及到 tab 的操做应该与 Xcode 尽可能保持一致。
Ctrl w
删除前一个单词Command + r
清除屏幕上的内容Command + t/w
打开/关闭 tabCommand + 数字
切换到第 n 个 tab双击
选中一个单词,自动复制iTerm 能够经过 Command + shift + []
来左右切换 tab,也能够经过 Command + Left/Right
切换,后者实际上是多余的,并且不符合习惯。
因此参考 这篇文章 或者自行查阅 Google,在 Preference->Keys->Global Shortcut Keys 中,设置好 Command
加上左右键,和删除键的对应操做。
git 的本质是对指针的操做。
掌握git的 add
、commit
、stash
、pull
、fetch
这些基本操做
理解什么是本地仓库,什么是远程仓库,理解多人开发时的 merge
和 conflict
的概念
掌握分支的使用,掌握 checkout
命令的使用
熟练掌握 git rebase
操做,包括 git rebase -i
和 git rebase --onto
,掌握一种 git 工做流
首先下载 oh-my-zsh 的配置到 ~/
目录下,而后在命令行中执行如下操做:
rm .zshrc
ln -s .sys.config/.zshrc .zshrc
复制代码
而后重启 iTerm。你能够根据本身的喜爱,前往 ~/.sys.config/setting/git.zh
配置 git 命令的别名,好比;
alias gcm='git commit -m'
alias gignore='git update-index --assume-unchanged'
alias gpush='git push origin HEAD:dev;'
alias go='git checkout'
复制代码
听说 Alfred 是效率神器,鉴于我除了写代码,通常不怎么玩 mac,因此也就没有去了解。若是有更多好的快捷键和应用,欢迎与我交流。