用mac已经有了一段时间了,作为一个爱折腾(懒)的程序员,我花费了大概一周的时间将自己的mac打造成了一个超高效率的工作工具,先展示一下其中的一个成果。
- 上面这个图是一键退出某些工作app,然后准备进入windows虚拟机工作
- 本来还有一个gif,但是太大了,所以直接放成视频,有兴趣可以看看:一键进入工作
一.如何构建你自己的快捷键体系(理论,如果不想看,可以跳过这一章直接看下一章实践)
我们都知道快捷键可以使得手不离键盘,这样一来就能减少键鼠(触摸板)之间的切换,从而提高效率。但是不同的软件的快捷键不同,不同平台之间(windows、mac、linux...)的快捷键也不同,那么如何一劳永逸的使用一套快捷键通吃所有软件个平台呢?
1.让所有平台遵循一个规范
正如我们前面所说,平台有好几个,所以首先我们得确定一个平台作为基点。我是从windows平台过渡到mac上面来的,之前的快捷键习惯不想改了,所以各种快捷键标准向windows看齐。(我想大多数人都是这样的,所以具有一定的适普性)
2.观察软件,找到共性
无论是window还是mac通过观察各式各样的软件,我们都能看见有下面这些操作方面的共性,下面以Mac的软件为例
- 1.仔细观察软件们的顶部菜单我们会发现,文件(file)、编辑(edit)、显示(view)、窗口(window)、帮助(help),这些条目是大部分app共有的(当然可能名字不同)除去帮助,我们还有四个条目可以下文章:
- 1.文件(file):
- 1.打开新标签页、打开文件、关闭标签页、保存文件,绝大部分app都有
- 2.编辑(edit):
- 1.复制、粘贴、剪切、全选、查找、重做、撤销、搜索,绝大部分app共有
- 2.搜索上一条、搜索下一条,少部分app共有
- 3.显示(view):由于每个app的界面布局不一样,所以我仅仅举几个例子。
- 1.Safari的:显示/隐藏书签边栏、显示/隐藏阅读边栏
- 2.Android Studio、CLion、IDEA:显示/隐藏各种边上的工具栏
- 3.Evernote:显示/隐藏侧边栏
- 4.窗口:
- 1.上一个标签页、下一个标签页、合并所有窗口,大部分app共有
- 1.文件(file):
- 2.联想我们每天需要对app进行的操作:
- 1.屏幕分块:整个屏幕、左半边、右半边、左上四分之一、右上四分之一、左下四分之一、右下四分之一
- 2.最小化、全屏
- 3.关闭软件
- 4.偏好设置
- 5.前进、后退
3.使用软件,找到个性
前面是找共性,找完了之后。我们在日常使用软件的时候会发现,某个软件的某些功能我们几乎没隔多久就会用一次,此时需要将这些特殊的功能提取出来,还是以Mac为例
- 1.Finder:我们会发现某些目录经常会用到,下载、桌面、用户目录、应用程序、文件...
- 2.Safari:各种书签
- 3.个人工作的软件:Android Studio、Photo Shop、IDEA、Sublime、VS Code...的各种项目
4.全局快捷键
对于某些操作是属于某个app的但是我们需要在所有app中都使用这个功能,此时就要用到全局快捷键
- 1.打开常用软件:例如Safari、Finder、Chrome等等,我们常常会互相切换,此时定义一个顺手的快捷键尤为重要
- 2.某个app的全局功能:翻译、记笔记、发邮件等等
5.快捷键的类型归类
我们知道无论是windows还是mac,都有shift、alt(option)、ctrl、win(command),这四个功能键。我就按照我的考虑将这些快捷键归个类,因为我的快捷键是依从windows来的,所以以windows为例
- 1.shift+字母:输出大写,地球人都知道
- 2.ctrl+字母:编辑相关的快捷键,如文件的增删、打开、保存,文字的全选、剪切、查找等等
- 3.alt(option)+字母:控制相关的快捷键,如软件窗口的增加、关闭,标签页的上一个、下一个等等
- 4.win(command)+字母:在mac中其实command键的功能就是windows的alt的功能,所以重复了,可以废物利用成一个后面说的组合键
- 5.组合键+字母:有两种用法,用于全局按键
- 1.直接组合:这种组合方式很多,但是每次按起来比较麻烦
- 2.使用工具将一个废弃的键(例如前面说的command键,或者fn键)代替组合键,即按这一个键,等于按多个键。
二.如何构建你自己的快捷键体系(实践)
1.接下来的实践是基于以下几条规则:
- 1.基于MacBook Pro 2017的内置键盘
- 2.大部分快捷键基于windows的习惯
- 3.小部分快捷键基于自身习惯
2.两个软件的介绍
- 1.Karabiner-elements:
- 1.功能:可以将键盘上的任意两个键进行功能调换
- 2.我的使用:用于将Mac的内置键盘的fn与左control互换,左option与左command互换,右command和右option换成了home和end.
- 3.Karabiner-elements下载地址
- 2.Keyboard Maestro:
- 1.功能:可以通过定义一个快捷键,实现一系列固定的操作
- 2.我的使用:接下来会按照上一章说的各个操作进行快捷键的设置
- 1.复制、粘贴、剪切、全选、查找、重做、撤销、搜索、保存文件、打开文件,以上的操作都遵循windows,都是ctrl+字母。但是我们知道在mac下这些快捷键是command+字母,所以需要进行转换:
- 1.添加一个新脚本:
- 2.命名脚本,为脚本添加一个触发器(即当进行这个操作的时候,会执行这个脚本),我这里使用的是按键触发器,即当按下某些键的时候就触发这个脚本:
- 3.将ctrl+c填入触发器中,然后点击添加动作,会弹出动作的列表,可以在上面查找我们需要的动作:
- 4.我们添加了一个触发按键的动作,并填入了command+c。此时这个脚本就表示,当我们按下了ctrl+c的时候会触发command+c按下的动作:
- 5.这样一来我们可以将上面的全部动作动转换成以windows平台为标准的快捷键,流程都是一样的。
- 1.添加一个新脚本:
- 2.打开新标签页、关闭标签页、上一个标签页、下一个标签页、前进、后退,很多app都会有标签页这一概念,例如safari、finder、sublime、Evernote、IDEA等等各种IDE,这些快捷键的定义可以根据个人爱好,或者Windows,或者Mac的标准。我经过实践发现使用alt(按键转换前的command)+方向键等,最为适手:
- 1.上一个/下一个标签页:alt+左方向键/右方向键,
- 2.前进/后退:ctrl+alt+左方向键/右方向键,
- 3.打开/关闭标签页:alt+加号/删除键,
- 4.至于脚本的定义,和上一节中一致
- 1.上一个/下一个标签页:alt+左方向键/右方向键,
- 3.打开边栏/工具栏之类的操作可以定义成alt+数字,这样的好处是如果工具栏增多了,可以进行拓展,也方便记忆
- 4.整个屏幕、左半边、右半边、左上四分之一、右上四分之一、左下四分之一、右下四分之一、最小化、全屏,像这些功能类似的操作,我们可以制作成一个脚本集合,通过一个快捷键+字母就实现全部的功能:
- 1.添加一个Group:
- 2.在集合中添加第一个脚本,添加按键触发器,添加重置app窗口大小动作:
- 3.点击上一步添加的动作中的resize by菜单,我们会发现菜单中有许多功能,足够满足我们的需求,我们可以选择Full Screen:
- 4.此时一个具有将app窗口占满整个屏幕的功能就诞生了:
- 5.此时只有一个功能,我们可以接着按照类似的操作定义其他功能。有一点要注意的是,这个group下的全部脚本的按键触发器需要设置成同一个快捷键,如图所示:
- 6.当我们完成了上面的操作的时候,我们可以试着触发快捷键,会发现全部的脚本都显示在一个菜单中,而我们只需要通过按一个字母选择一个脚本触发就行了:
- 1.添加一个Group:
- 5.打开常用软件、打开不常用软件、关闭当前软件,这些就简单说说,因为也就是一个动作就能搞定的功能
- 1.打开常用软件:
- 2.打开不常用软件:可以使用脚本集合来减少快捷键的数量
- 3.关闭当前软件:
- 1.打开常用软件:
- 6.在Finder中快捷打开某个文件夹,这个功能比较复杂。我们前面都是在一个脚本中只使用一个动作,在这里我们可以按顺序执行一系列动作以完成这个复杂的功能:
- 1.先将Finder调为当前应用
- 2.使用一个计时器,停止执行脚本直至Finder已经是当前应用
- 3.触发快捷键ctrl+G,大家打开Finder可以看见有这样一个功能前往文件夹...,这里就是触发这个功能:
- 4.再触发一个delete键,将当前的路径删除
- 5.在前往文件夹...窗口中填入目标路径
- 6.触发return,这样一来就到了目标文件夹
- 7.当然如果文件夹多了的话,可以使用脚本集合,同理更多的功能都可以像这样由一个个的小功能叠加起来
- 1.复制、粘贴、剪切、全选、查找、重做、撤销、搜索、保存文件、打开文件,以上的操作都遵循windows,都是ctrl+字母。但是我们知道在mac下这些快捷键是command+字母,所以需要进行转换:
- 3.KeyBoard Maestro下载地址
三.为快捷键体系添加更多功能
如果说我对Keyboard Maestro有不满意的地方,那么就是图形界面太少。对于如何制作搜索的功能我根本无从下手。这个时候Alfred拯救了我,我想很多人都用过这个软件,相关的介绍也很多了,所以接下来我只说别人没说过的。
1.我的插件
当然我搜集了很多插件,其中有些经过了我自己的改造,现在放出来给大家使用。
- 1.Things:可以和things结合快速定义日程
- 2.NetWork:可以查看wifi列表并连接wifi
- 3.ItermFinder:可以在Finder和Iterm之间互相打开路径
- 4.Top:查看前几名内存的应用
- 5.Restart:重新启动应用
- 6.Kill:直接将应用杀死
- 7.Fakenum:获取测试数据
- 8.Ip:获取当前电脑的ip
- 9.HiddenFile:显示或者隐藏 隐藏文件
- 10.EverNote:直接填写笔记,或者查询笔记
- 11.Douban:在Douban上查找电影、音乐、书籍评分
- 12.Dash:在Dash中查找
- 13.Copy Url:拷贝当前网页的url
- 14.BiliBili:在b站查找
- 15.Baidu:在百度中查找,会提前显示条目
- 16.AboutMac:查看mac的信息
- 17.知乎:在知乎中查找,会提前显示条目
- 18.有道翻译:查找翻译单词意思,还可以说出英文
- 19.ADB:做android的会知道,进行ADB的操作
2.将Alfred与Keyboard Maestro相互整合
这里我默认大家对Alfred已经有了一定的了解,如果真的不了解的话可以看看这个教程。少数派的Alfred教程
- 1.Alfred的劣势:相较Keyboard Maestro的众多动作,Alfred的动作比较少。就例如一个简单的模拟按键按下都需要AppleScript来实现,更别说更复杂的动作。
- 2.Keyboard Maestro的劣势:
- 1.前面已经提到了一个,KM没有方便的搜索界面。
- 2.Alfred可以更方便的执行pyhotn、php等脚本语言的脚本
- 3.Alfred和Keyboard Maestro的互相调用:只要能够互相调用就可以方便的将两个软件进行结合
- 1.Alfred调KM:其实我们知道KM目前绝大部分的入口是快捷键,所以我们可以在Alfred中使用一个模板AppleScript来触发快捷键从而调用KM:
- 1.创建一个Alfred的Workflows,填写一个keyword触发器:
- 2.创建一个脚本执行器:
- 3.填写执行代码,很简单1、3行是默认的不用修改,第2行前面的osascript是默认的,后面的是AppleScript的路径:
- 4.构造模板AppleScript也很简单,1、3行不需要改变,第二行的数字代表字母,大括号内可以填写四个功能键。所以这一个脚本的意思就是,按下alt(option)+37表示的字母。点击查看数组代表的字母:
- 5.至此我们就能很方便的在Alfred中调用KM
- 1.创建一个Alfred的Workflows,填写一个keyword触发器:
- 2.KM调用Alfred:这个就简单了,因为Alfred的是快捷键和搜索窗口,所以可以通过之前的教程很方便的构建脚本来调用Alfred
- 1.Alfred调KM:其实我们知道KM目前绝大部分的入口是快捷键,所以我们可以在Alfred中使用一个模板AppleScript来触发快捷键从而调用KM:
3.Alfred下载
四.其他软件以及Tips
- 1.PopClip:
- 2.Evernote:
- 1.使用:可以通过KM将快速笔记的功能整合进入快捷键体系中:
- 2.功能:
- 1.迅速记录文字,而不需要对应用进行切换
- 2.通过前面的Alfred插件联动,可以方便的查找笔记
- 1.使用:可以通过KM将快速笔记的功能整合进入快捷键体系中:
- 3.Dash:
- 1.程序员的宝典,通过前面Alfred插件的联动,方便查找Api
- 2.软件下载
- 4.AirMail:
- 1.比原生邮件更方便的邮件客户端,可以方便的整合进入快捷键体系
- 2.软件下载
- 5.MindNode:
- 1.简约方便的思维导图应用,可以通过PopClip的插件md2mm,直接将md的文章转化为思维导图
- 2.软件下载
- 6.Parallels Desktop:
- 1.Mac下面最好的虚拟机,可以通过KM定义脚本的方式,在Mac和Windows之间切换
- 2.软件下载