0.前言
毕业工作至今已经9个月了,很快就一年了。近一个月从小米跳槽来到了字节跳动,配了心心念念的顶配版MacBook Pro,经过一个多月的折腾,总结了一些提升工作效率的小技巧。(Ps:适用于Mac系统及部分Linux系统)
1.Git
作为程序员,git是日常与团队协作最好的工具了,没有之一。git命令在使用过程中,发现有些过长,这里列举一些“偷懒”的小方法。
首先在终端中,编辑一个名为.gitconfig的文件,位置于用户根目录下,即~。
vim ~/.gitconfig
vim是一个文本编辑器,掌握了其快捷键,可以飞快coding,几乎可以手不离开键盘。
输入上述命令后,在该文件中填入下列内容
[alias]
co = checkout
ci = commit
st = status
pl = pull
ps = push
dt = difftool
cp = cherry-pick
br = branch
这是相当于给git的一些常用命令配了一个别名,如git checkout xxxbranch
可以用git co xxxbranch
表示,以此类推。此小技巧适用于Mac及Linux。
2.brew
brew相当于Linux系统中的apt-get或yum。brew官网点击这里。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
在终端中运行如上命令,即可安装brew命令。可是在brew命令执行时,默认会有烦人的brew update
提示,会浪费一些时间,这时可以在zsh的配置中添加如下配置即可。
export HOMEBREW_NO_AUTO_UPDATE=true
安装过后,你就可以愉快的在命令行用brew安装想要的软件包了。
除此,你还可以安装一个cask命令,这样就可以通过brew cask命令安装一些带有图形界面或者说是已经编译好了的应用包(.dmg/.pkg),仅仅是下载解压,放在同一的目录中(/opt/homebrew-cask/Caskroom),省去了自己去下载、解压、拖拽(安装)等等一系列蛋疼的步骤,同样,卸载相当容易与干净。这个对一般用户来说会比较方便,包含很多在App Store里没有的常用软件。
home cask命令通过如下命令安装:
brew tap homebrew/cask-versions
3.终端神器iTerm2
要说mac上最好用的终端是什么,不是mac自带的终端,而是iTerm2。安装了上述brew cask
命令后,即可使用下述命令安装,或者到iTerm2官网下载安装。
brew cask install iterm2
然后在iTerm2中是无法使用Option
键在单词间跳转的,需要手动做一些设置,如下图:
添加如下两个配置即可。
3.1 选择文本
iTerm2 中选择文本有三种方式,分别是:
- 双击:选中单词
- 三击:选中整行
- 四击:智能选择
智能选择是一个比较有意思的功能,完整的介绍可以参考官方文档。对于我来说,以下几种情况下用智能选择是非常棒的:
- 代码片段,比如智能选择会自动选中
namespace::identifier
以及foo.bar.baz
这种语法 - 双引号内的字符,比如
"this is a quoted string"
- 电子邮件,智能选择会选中整个邮件地址
- 完整的 URL,智能选择会选中 scheme
另外,iTerm2 默认选中即复制,所以不用额外的 Command + C
这一步了。
3.2 Command键
Command 主要用来打开文件或者 URL。对于输出到终端的文件名或者 URL,我们可以按住 Command 键点击它,就可以直接打开了。
此外,按下 Command + Option 还可以选中矩形范围内的文本。
3.3 代码补全
按下Command + ;可以打开代码补全功能.
通过这个功能,你可以快速输入最近输入的命令
3.4 丰富的主题功能
iTerm2支持主题功能,可以通过设置设置自己喜欢的配色,给自己一个愉悦的开发环境。
这里推荐自用的主题,你也可以前往https://github.com/mbadolato/iTerm2-Color-Schemes下载主题,然后Import到iTerm2中选择使用。
关于iTerm2的技巧还有很多很多,这里没办法完全展现,可以自行查阅资料。
4.zsh & oh-my-zsh
不知道什么时候开始,mac os已经全线将zsh替代bash作为默认终端了。在小米时,用的是Ubuntu系统,里面预装的终端是bash,后面装了zsh后感觉真香,这里墙裂推荐。zsh安装可自行百度查询。
安装方法有两种,可以使用curl或wget,看自己环境或喜好:
# curl 安装方式
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
# wget 安装方式
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
关于oh-my-zsh的折腾,可以看这篇文章,这里不再赘述。iTerm2 + Oh My Zsh 打造舒适终端体验
5.alias别名
又到了教偷懒的时刻了。安装完上述组件,就可以解锁一些偷懒方法。首先zsh的配置文件是~/.zshrc,使用vim打开后,在最下面输入如下:
alias zshconfig="vim ~/.zshrc"
alias reload="source ~/.zshrc"
推出后,使用soure ~/.zshrc
命令使其生效。然后,你就可以使用zshconfig
和reload
这两个命令了,前者是编辑zsh配置,后者是使其生效。看懂了吗,alias其实就是给某个命令其一个别名,通过这个别名去执行对应的命令。
这里列举几个个人使用的命令
alias cura="adb shell dumpsys window | grep mCurrentFocus"
// 快速查看手机当前是哪个Activity
alias vimconfig="vim ~/.vimrc"
// 编辑vim配置
alias cpg="adb shell am startservice ca.zgrs.clipper/.ClipboardService && adb shell am broadcast -a clipper.get"
// 获取手机剪切板内容,需要配合clipper使用,后续介绍
alias cps="adb shell am startservice ca.zgrs.clipper/.ClipboardService && adb shell am broadcast -a clipper.set -e text"
// 设置手机剪切板内容
alias prog="sh /Users/bytedance/Library/Android/sdk/tools/proguard/bin/proguardgui.sh"
// 打开解混淆工具
如果存在同名的别名、函数、内置命令等,调用优先级是:
别名 > 单数 > 内置命令 > $PATH 路径下的可执行文件。
一般我们只用 alias 来简化固定的长命令,由于别名不支持参数,所以复杂的处理流程建议通过定义函数来解决。
6.编辑器之神:Vim
之前听说有人用vim写代码,我是不信的,当我第一次打开vim的时候,啊这是什么玩意啊,输入字符都输入不了,退出呢,撤销呢,可谓是一脸懵逼。但我去到小米后,看到ld在vim界面飞快的输入、复制、剪切,我信了,学习了一番其用法后,嗯~又是一次真香。
Vim 分为三种模式:
- 输入模式:这就很普通的编辑器一样,光标在某个位置上闪烁,表示我们可以输入内容了。
- 普通模式:在输入模式下按下 Esc键可以退出输入模式,进入到普通模式。
- 命令模式:执行搜索、替换等命令或调用插件。
接下来是一些键位:
- 方向键
上:k , 下:j , 左: h , 右:l
- 词组正向跳转(以空格和符号作为分割)-- 小写的w
例如:“hello world,I'm wrting”,当光标在h时,连按w光标依次显示为:w > , > I > ' > m > w > "
- 词组正向跳转(以空格为分割) -- 大写的W
例如:“hello world,I'm wrting”,当光标在h时,连按大写的W光标依次显示为:w > I > w
- 词组反向跳转-- 小写的b和大写的B
情况与w类似。
- 正向跳转到指定字符-- 小写的f
例如:“hello world,I'm wrting”,当光标在h时,输入fw,光标跳转到字符world的w字符处。
- 反向跳转到指定字符-- 大写的F
例如:“hello world,I'm wrting”,当光标在d时,输入Fw,光标跳转到字符world的w字符处。
- 正向跳转到指定字符的上一个位置(空格也算)-- 小写的t
例如:“hello world,I'm wrting”,当光标在h时,输入td,光标跳转到字符world的l字符处。
- 反向跳转到指定字符的下一个位置(空格也算)-- 大写的T
例如:“hello world,I'm wrting”,当光标在d时,输入Tw,光标跳转到字符world的o字符处。
复制当前行-- yy
粘贴-- p
粘贴至光标的下一行,例如:“hello world,I'm wrting”,当光标在此行时,输入yyp,当前行复制并粘贴,下面又多出一行。
- 10p
粘贴10次
- 跳转至下一个与当前光标相同字符的位置(可以跨行跳转)-- *
例如:“hello world,I'm wrting”,当光标在hello的最后一个l字符处,输入 * ,跳转到world的l字符处。
- 跳转至上一个与当前光标相同字符的位置(可以跨行跳转)-- #
情况如上。
- 选中(再通过上下左右进行区域选中)-- v
例如:当光标在第一行hello的h字符处,输入vjj
删除当前行-- dd
5dd
删除当前行在内以下的5行。
- 删除选中区域-- d
例如上面的例子中,可以输入vjjd进行区域删除。
撤销 -- u
正向按字符单位进行删除-- x
从光标所在位置处逐个正向删除
反向从光标上一个位置处进行删除-- 大写的X
从光标处删除至指定字符-- df指定字符
例如:“hello world,I'm wrting”,当光标在h时,输入dfw,结果为“orld,I'm wrting”。
- 删除引号内的内容-- di"
例如:“hello world,I'm wrting”,当光标在此行时,输入di",结果为“”。
删除包含引号在内的内容-- da"
跳转至文件头-- gg
跳转至文件尾-- G
跳转至指定行的开头-- 行号G
搜索
- 普通模式下输入--/要搜索的内容\c
- 使用n跳下一位置,N跳上一位置
熟练了之后,连Android Studio和IDEA中我都安装了ideaVim插件,编辑代码时使用vim进行编辑,速度飞快,手指基本不用离开键盘,同事看了都直呼内行~(开个玩笑)
7.Alfred
Alfred 绝对是让 Mac 更加好用的神器之一,如果 Mac 上只能安装一款三方软件,那绝对是 Alfred。我把 Alfred 拔高到如此地位绝非是为了捧杀它,而是确实实至名归,本文主要会介绍 Alfred 原生的用法。
除了 Alfred 软件自带的功能外,它还允许用户自己开发 workflow 并分享出来,正是这些 workflow,彻底奠定了 Alfred 的神器地位。(Ps:Alfred在4.0后很多功能需要会员,可以搜索下载pj版)
Alfred简介
打开程序,首页中可以编辑 Alfred 的启动快捷键,这里我把它设置为 双击 Command 键,最好用的 App 当让要配备最好按的快捷键。
文件/程序搜索
文件搜索是 Alfred 最基础的功能,类似于系统的 Spotlight,直接双击 Command 打开 Alfred 的窗口,然后输入文件名即可。
计算器
双击Command后,字节在输入框中输入计算式,即可直接获得结果。
剪切板历史
考虑下面几种场景,你的做法是什么?
- 不知道现在剪贴板中的内容是什么,需要先粘贴出来,如果不满意再删除?
- 想要拿到上上次复制的内容,但是剪贴板里面已经被覆盖了
- 上周复制过一段话,依稀只记得某些关键字,想要再把内容找出来
有了 Alfred 的剪贴板增强,以上场景都不是问题,首先要在 Features -> Clipboard 中打开剪贴板历史:
我把剪切板历史的时间设置为了3个月,同时把打开剪贴板的快捷键设置为 Command + Shift + C,按下快捷键我们会看到:
点击或按条目后面的快捷键即可直接输入剪切板中的内容。
关于Alfred的用法还有好多好多,例如文本片段snippets,可以将一些常用的文本存下来,输入过程输入关键字便自动输入,还有workflow,这里推荐一下有道翻译的workflow,对于我这种英语渣异常好用。https://github.com/wensonsmith/YoudaoTranslate
8.clipper
https://github.com/majido/clipper
在github页面中下载apk,安装至手机中,即可通过adb命令获取或设置手机的剪切板,如使用了上述的别名,命令如下:
# 获取剪切板
cpg
# 设置剪切板内容为"abc"
cps "abc"
效果如下:
9.彩蛋 & 结束语
brew install sl
alias sl="ls"
ls
brew install archey
echo "archey" >> ~/.zshrc
source ~/.zshrc
至此,第一阶段的“提升工作效率小技巧”总结结束,由于时间问题,不能面面俱到及万无一失,后续会不断补充,enjoy yourself and enjoy life~