如何大幅度提高 Mac 开发效率
点击下方“IT牧场”,选择“设为星标”
juejin.cn/post/6844903521582579725
01、综述 02、入门 03、Snap 04、Xcode 快捷键 05、文件编辑 06、文件跳转 07、搜索 08、tab 09、Scheme 10、调试 11、其他 12、Vim 常用快捷键 13、进入输入模式 14、文本操作 15、光标移动 16、举一反三 17、实战 18、Chrome 19、iTerm2 20、Git 21、Oh my zsh 22、More
关于 Mac 工作效率的文章一直层出不穷,然而并非所有内容都适合程序员,比如某些 Unix 命令,其实使用频率非常低。作为一名初级 iOS 程序员,我尝试着和大家分享一些能够切实提高我们开发效率的小技巧。
我是无鼠标主义者,任何需要鼠标的操作在我看来都是极为低效的。Mac 的触摸板非常好用,但是我依然在尝试避免使用触摸板。因为双手保持在键盘区域更适合编程。虽然触摸板不可能被避免(比如浏览网页),但我希望至少在 Xcode 中不使用它。
所以,本文会和大家分享一些系统级快捷键,Xcode、Chrome、iTerm 等应用中的快捷键,以及常用的工具,比如 Vim 和 Git 的使用。这里面除了 Xcode,其他都是通用的,如果你不是 iOS 开发者,建议自行查阅相关 IDE 的快捷键。
01、综述
一部分人可能认为,快捷键用起来很别扭,还不如自己用触摸板(鼠标)来得方便。然而你应该意识到,使用触摸板的效率是有上限的,当你熟悉快捷键后,速度远比现在快得多。
这一点,在学习 vim 时尤其重要。你不应该关注完成一个命令需要多久,而应该关注需要多少个按键,你可以认为在形成肌肉记忆后,按键的思考时间为0。所以我们得出一个结论:
总时间 = 按键数 * 一个常数(表示单次按键时间)。
因此,评价 vim 中一个操作的优劣,通常用高尔夫分数来表示,它表示完整这个操作需要几次按键。
但是!!!快捷键是提高效率的手段,但它不会提高代码质量。既要坚持学习,也要适可而止,万万不可主次颠倒。
关键不在于你学会了多少快捷键,而是你有多少工作是可以通过快捷键来完成的,目的在于提高效率,仅此而已。
一种很强大,通用的的方法是 设置->键盘->快捷键->应用快捷键 然后精确匹配应用中的快捷键名,这个通常需要配合 CheatSheet 来实现。当你觉得某个快捷键不好用的时候,也可以通过这种方式去修改。
在设置快捷键时,需要避免全局快捷键和应用快捷键冲突,同时也要注意一些常用操作在多个应用内保持统一。
我建议将 Caps Lock 与 Ctrl 键对调,因为大小写切换键的使用频率非常低,而 Ctrl 的使用频率显然高于他,因此有必要将大小写切换键放到最不容易触碰到的地方。
下面我会介绍一些我常用的快捷键,它们大部分是系统自带的,也有少部分是我自己定义的。
02、入门
绝大多数应用的 preference 页面都是通过 Command + ,
打开的。剪切,复制,粘贴,撤销,重做,光标移动到行首和行尾,这些基础操作必须掌握。
03、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 中有特殊的用处。
04、Xcode 快捷键
编译、运行,Instruments,单元测试,暂停这些基本操作就不解释了。我把一些自认为比较有用的命令加粗表示:
05、文件编辑
Command + [
和Command + ]
左右缩进Command + Option + [
和Command + Option + ]
当前行上下移动Command + Option + Left/Right
折叠、展开当前代码段
06、文件跳转
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
文件搜索
07、搜索
Comannd + Shift + f
全局搜索Command + e
搜索当前选中单词Command + g
搜索下一个
08、tab
Command + t
新建一个 tabCommand + w
关闭当前 tabCommand + Shift + [
和Command + Shift + ]
左右切换 tab
09、Scheme
Command + shift + ,
编辑 scheme,选择 debug 或 release
10、调试
F6
:跳到下一条指令 F7
:跳进下一条指令(它会跳进内部函数,具体效果自测) Control + Command + y
继续运行
11、其他
Command + k
删除 Console 中的内容Command + d
打开/关闭 控制台(修改系统快捷键:Show/Hide Debug Area)
获得更全面的快捷键介绍,请参考:这篇文章
12、Vim 常用快捷键
入门指南:简明 Vim 练级攻略 在我的 git 上有一份 Vim 的配置,先下载到 ~/
目录下,然后建立软连接:
rm .vimrc
ln -s .vim/.vimrc .vimrc
复制代码
推荐一个 Mac 上的 Vim 软件:MacVim,它比在终端中看 Vim 更好一些。打开 MacVim 后,输入以下命令安装插件:
:BundleInstall
复制代码
13、进入输入模式
i
在光标前面进入输入模式,a
在光标后面进入输入模式I
在行首进入输入模式,A
在行尾进入输入模式o
在下一行行首进入输入模式,O
在上一行行首进入输入模式
14、文本操作
yy
复制当前行,dd
剪切当前行,p
复制。注意这里用的都是 Vim 自带的剪贴板。U
撤销,**Ctrl + r
重做x
删除光标所在的字母cae
或bce
删除当前光标所在的单词,并进入编辑模式数字+命令
重复命令 n 次,比如3dd
15、光标移动
^
到本行开头,$
到本行末尾:111
或111G
跳转到 111 行,gg
第一行,G
最后一行。e
移动到本单词的结尾,w
移动到下一个单词的开头。%
匹配当前光标所在的括号(小括号,中括号,大括号)*
查找与光标所在单词相同的下一个单词f + 字母
跳转到字母第一次出现的位置,2fb
跳转到字母 b 第二次出现的位置t + 字母
跳转到字母第一次出现的前一个位置,3ta
跳转到字母 a 第三次出现的前一个位置f 和 t 换成大写,表示反方向移动查找。 dt + 字母
表示删除字母前的所有内容。
16、举一反三
`` 比如 0y$
,从行首复制到行尾,ye
表示 从当前位置复制到本单词结尾。a
或i
action
可以是任何的命令,比如 d
,y
,v
等 object
可以是 w
单词,p
段落,或者是一个具体的字母 a
和 i
的区别在于 i
表示 inner,只作用于内部,不含两端。
思考一下,有多少种方法可以删除光标当前所在单词?
答案:diw
,daw
,caw
,ciw
,bce
,bde
。
思考一下他们的原理,后两者不太推荐(有可能跳到前一个单词)。
如果是选中当前单词呢?
除了以上基本语法,我还在整理一套 《Vim 基础练习题》,等完成之后会与大家分享。
17、实战
给多行添加注释: v
:进入可视状态nj
: 向下选择n行, 或者输入Shift ]
跳到段尾Command + /
添加注释在 MacVim 中, git blame
无比清晰:
18、Chrome
Command + l
焦点移动到地址栏Shift + Option + Delete/Left
向左删除/选中一个单词(可以自定义为Ctrl-w
)Command + y
搜索历史Command + 数字
快速切换 tabCommand + shift + []
左右切换 tabCommand + t/w
新建/关闭 tabCommand + e/g
搜索选中,前往下一个,或者用Command + f
和回车。
可以看到,Chrome 中涉及到 tab 的操作应该与 Xcode 尽量保持一致。
19、iTerm2
Ctrl w
删除前一个单词Command + r
清除屏幕上的内容Command + t/w
打开/关闭 tabCommand + 数字
切换到第 n 个 tab双击
选中一个单词,自动复制
iTerm 可以通过 Command + shift + []
来左右切换 tab,也可以通过 Command + Left/Right
切换,后者其实是多余的,而且不符合习惯。
所以参考 这篇文章 或者自行查阅 Google,在 Preference->Keys->Global Shortcut Keys 中,设置好 Command
加上左右键,和删除键的对应操作。
20、Git
git 的本质是对指针的操作。
掌握git的 add
、commit
、stash
、pull
、fetch
这些基本操作
理解什么是本地仓库,什么是远程仓库,理解多人开发时的 merge
和 conflict
的概念
掌握分支的使用,掌握 checkout
命令的使用
熟练掌握 git rebase
操作,包括 git rebase -i
和 git rebase --onto
,掌握一种 git 工作流
21、Oh my zsh
首先下载 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'
复制代码
22、More
据说 Alfred 是效率神器,鉴于我除了写代码,一般不怎么玩 mac,所以也就没有去了解。如果有更多好的快捷键和应用,欢迎与我交流。
干货分享
最近将个人学习笔记整理成册,使用PDF分享。关注我,回复如下代码,即可获得百度盘地址,无套路领取!
•001:《Java并发与高并发解决方案》学习笔记;•002:《深入JVM内核——原理、诊断与优化》学习笔记;•003:《Java面试宝典》•004:《Docker开源书》•005:《Kubernetes开源书》•006:《DDD速成(领域驱动设计速成)》•007:全部•008:加技术群讨论
加个关注不迷路
喜欢就点个"在看"呗^_^