如何提升Mac下生产效率

工具篇

效率神器Alfred

可以从Alfred官网下载,免费版没有workflow功能,付费购买Powerpack可以使用。建议大家购买正版,如果想找破解版,网上也有很多,自行搜索。

这有一篇比较详细的Alfred的使用教程,大部分都被涵盖进去了。这里主要介绍几种对开发帮助比较大的workflow插件,官方workflows地址在这里,可以根据需要选择自己喜欢的插件使用。

Youdao

其实在开发过程中经常遇到一些与英文打交道的场景,除了系统自带的字典功能,我们常用的就是有道了。直接调起客户端去搜也很方便,但是如果是频繁操作或者是在全屏下操作,还需要跑到有道里面搜一个单词,搜一句话还是会显得麻烦。

这里有一个Youdao的workflow插件。下载地址。安装之后可以通过在Alfred中键入yd {query}调出有道字典,并直接搜索翻译结果。使用Enter复制翻译结果,支持多种语言和句子翻译。

CodeVar

生成可用的代码变量,解决你不知道该如何命名一个函数,类型,属性的烦恼。支持小驼峰(xt)、大驼峰(dt)、下划线(xh)、中划线(zh)、常量命名(cl)这几种命名方式。 下载地址

Github

可以直接在Alfred的输入框搜索github仓库。 下载地址

代码片段

Snippets。可以将自己常用的代码片段放进去,让后通过快捷键调出Snippets,直接使用代码。

func test<#Name#>() {
    <#statements#>
}

更多插件

Workflow官方插件 packal

第一个插件库,好像很久不维护了,很多插件链接都失效了。第二个packal是alfred的一个活跃论坛,比较推荐到这里发现适合你的好东西。另外github,各个博主的推荐文章也有很多,基本你能想到的搜索主题都可以找到对应的workflow插件,这里就不得不佩服社区力量的强大,还有就是这个自定义插件功能做的太棒了。

Dash

文档查询,下载地址 遇到问题最好的解决方式就是查文档,API描述能消除大部分自己的疑虑,Dash支持几十种语言的文档查询,还支持文档注释,tag功能。

Dash+Alfred

Dash本身支持很多IDE的插件,其中就包括Alfred插件,可以在Preferences->Integration中找到Alfred。 使用方式如下:

命令和快捷键篇

几个常用命令行工具

say say命令可以读出英文

$ say hello world

echo echo是输出命令

# 输出shell本身的文件名
$ echo $0

将一段内容重定向至某一文件

$ echo "5.0" > .swift-version

man man命令可以查看某个命令行的详细使用

$ man echo

curl curl为client url缩写。

$ curl www.baidu.com	#查看网页源码
$ curl -i www.baidu.com #显示头文件
$ curl -o example.html https://www.example.com	#将服务器回应保存成文件

常用终端快捷键

快捷键含义
Ctrl+a跳到行首
Ctrl+e跳到行尾
Ctrl+u删除光标之前到行首的字符
Ctrl+k删除光标之前到行尾的字符
Ctrl+w删除从光标位置前到当前所处单词(Word)的开头
Command+D垂直分屏
Ctrl+D关闭垂直分屏

自己动手写一个工具

AppleScript

编写自动化工具就要选一中脚本语言,这里选择了AppleScript。

这是因为:

  • 它语法简单,并接近自然语言。(没有标点符号)
  • 语法查询十分方便。(系统原生提供语法查询字典)
  • mac自带Script Editor可以实现编写运行并检查语法
  • mac上主流应用都含有AppleScript的语法支持 关于AppleScript这有一份简单的教程。 我们摘取其中几点,简要讲下AppleScript的语法。

tell命令

tell application "Safari"
    activate
end tell 

告诉Safari启动。 tell命令可以嵌套使用。

set命令 

定义变量到剪贴板。

set myVariables to clipboard

AppleScript Suite

AppleScript Suite就是 AppleScript 类(class),及其元素(element)和属性(property)的集合。这个就是OmniFocus在AppleScript上定义的Suite。

脚本字典

打开「脚本编辑器」 → 新建一个脚本 → 用快捷键 Command+Shift+O 打开 AppleScript 字典(Dictionary)。这个打开之后就能看到各个应用的Suite,我们可以通过这些说明,来完成功能的使用。

编写脚本

有了上面的基础我们来编写一个选中文件夹,然后让iTerm2跳转到指定目录的脚本。

定位文件路径

tell application "Finder"
	set pathFile to selection as text
	--POSIX是mac中的根目录变量
	set pathFile to get POSIX path of pathFile
	--防止目录存在空格跳转不了
	set pathFile to quoted form of pathFile
	set pathFile to "cd " & pathFile
end tell

现在我们通过tell和set命令已经获取到了cd pathFile这段文本。

在iTerm中输入命令

上一步获取到了文本命令,接下来我们需要将这段命令在iTerm中执行。那怎么将上面的文本写入iTerm中呢?

大致思路为:打开iTerm > 创建窗口 > 写入命令。

接下来就是如何实现这几个步骤,通过查看iTerm的Suite: 我们可以找到create window with default profilewrite命令。有可能这就是我们需要的也有可能不是,所以有些时候是需要尝试出来的。最终实现上面步骤的代码为:

tell application "iTerm"
	create window with default profile
	tell current session of current window
		write text pathFile
	end tell
end tell

然后完整代码为:

tell application "Finder"
    -- get selection path
    set pathFile to selection as text
    set pathFile to get POSIX path of pathFile
    -- fix space problem in the directory
    set pathFile to quoted form of pathFile
    tell application "iTerm"
	   create window with default profile
	   tell current session of current window
		  write text pathFile
	   end tell
    end tell
end tell

AppleScript+Alfred

上面过程我们编写了脚本,但是怎么方便的使用它呢?可以利用Alfred。 在workflow中,我们增加一个Hotkeys。

然后绑定快捷键Command+O,从快捷键脱出一条线,选择Actions > Run Script,选择Language为AS(AppleScript),粘贴我们刚才写的代码,保存即可。

之后我们可以选中文件夹,触发热键Command+O就能直接在iTerm中定位至改目录了。