【干货】如何大幅度提高Mac开发效率

转载 2016年05月30日 13:52:49

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

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

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

综述

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

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

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

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

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

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

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

1171077-48b2857b3b1cc69a.jpg

应用内快捷键替换

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

我建议将 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 中有特殊的用处。

1171077-554331b21ed70d99.jpg

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 .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 第三次出现的前一个位置

  • 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 无比清晰:

1171077-566c74eab1e29886.jpg

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 工作流

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'

More

据说 Alfred 是效率神器,鉴于我除了写代码,一般不怎么玩 mac,所以也就没有去了解。如果有更多好的快捷键和应用,欢迎与我交流。


http://www.cocoachina.com/ios/20160530/16520.html

聊一聊如何提升团队开发效率

又是一年年底了,又到了忙着总结,忙计划的时间了,相信每年的总结计划里,大家都有提高团队开发效率的计划。列了一大堆提升计划和目标。然而,这些计划真的执行了吗?这些目标都完成了吗?     过...
  • lenovouser
  • lenovouser
  • 2016年03月04日 08:58
  • 2773

Java web开发效率提升

http://hillside.iteye.com/blog/580639 http://www.cnblogs.com/zhulongchao/p/5906205.html https:...
  • u012506661
  • u012506661
  • 2016年12月05日 12:51
  • 657

7 款 Mac 工具,提高你的效率!

从 2014 到现在,为了提升自己的效率,尝试过上百款工具,最终留下了这 7 款,如果文章中提到的工具大家感兴趣的话,后续会介绍具体使用技巧。 Evernote 印象笔记(Evernote)...
  • cym492224103
  • cym492224103
  • 2018年01月28日 13:41
  • 137

提高开发效率

作为开发,通过无尽的加班完成工作,永远不是一个好办法,必须不断提高开发效率,不断总结提高效率的方法,下面总结一下自己目前知道的方法。 1.开发工具模版配置 已经习惯使用intellij idea ...
  • u012814506
  • u012814506
  • 2015年08月22日 22:28
  • 590

如何提升Android开发效率

文章转载自给创业码农的话–如何提升开发效率 simsun在2013年从手Q转岗到微信,在此非常感谢他对微信做出的贡献。在我看来,sim是一个活生生的全栈工程师,从硬件、后台到iOS、Android...
  • u012963909
  • u012963909
  • 2016年01月06日 17:55
  • 1116

【干货集中营App】

前言:一个练手的安卓app ,Api接口来源:http://gank.io/api,非常感谢代码家。应用描述:干货集中营是一个技术干货共享平台。每个工作日,网站都会分享一些技术干货信息,包括Andro...
  • zouzhigang96
  • zouzhigang96
  • 2016年08月25日 10:56
  • 1265

Java多线程干货系列—(二)synchronized

前言 本篇主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题。没错就是使用synchronized。 正文 如何解决线程安全问...
  • ChatHello
  • ChatHello
  • 2017年04月05日 08:46
  • 853

论软件开发效率如何提升质的飞跃

主题概述:众所周知,现在的IT研发公司,不论是什么样类型的,项目的开发成本非常的高,且效率大部分都比较低下,体现在多方面。例如:团队的协同,团队成员能力的良莠不齐,项目成员的更换等等,都会造成成本的增...
  • u011045822
  • u011045822
  • 2016年06月16日 14:25
  • 451

使iOS开发提高极大效率的不为人知的技巧~~

结合自身的实践开发经验总结出了22个iOS开发的小技巧,以非常欢乐的语调轻松解决开发过程中所遇到的各种苦逼难题,光读着便已忍俊不禁。 1.TableView不显示没内容的Cell怎么办? 类似于图...
  • BX_Jobs
  • BX_Jobs
  • 2015年12月06日 13:18
  • 816

在工作中如何提高开发工作效率

1.你可能会常常发现,写了一段代码后,编译程序时是一大堆的出错 (原因:语法不熟)  ──别担心,这是每个程序员必须经历的事,这时候你就需要更大的耐心及细心,对每一行代码进行仔细人阅读并改正,这个很...
  • u013457570
  • u013457570
  • 2016年07月04日 07:06
  • 780
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【干货】如何大幅度提高Mac开发效率
举报原因:
原因补充:

(最多只允许输入30个字)