玩转MacBook(Mac效率神器Alfred + Dash)

一、 安装Alfred

Alfred 是一款本地搜索及快速启动工具,它可以帮你提高工作效率。alfred可以快速的搜索本地应用、搜索本地文件、执行终端命令、翻译、文件管理、音乐控制等等!

从界面上分,Alfred分为设置界面操作界面;从功能上分,Alfred分为基本搜索和快速启动的功能,以及工使用自定义插件的工作流功能。

1.1 下载arfred

1.2 配置alfred

1.2.1 如何打开alfred

Alfred启动后,在Mac上方菜单栏上会有其图标,左键点击后选择Preferences...即可打开Alfred的设置界面。

image-20220406151703808

image-20220406151812748

可以看到Alfred的设置界面主要分为以下几个部分:

  1. General:通用;

  2. Features:特性;

  3. Workflows:工作流;

  4. Appearance:外观;

  5. Remote:远程服务

  6. Advanced:Alfred全局设置

  7. Powerpack:查看是否购买Powerpack以及其许可证。

1.2.2 General设置

General界面主要是以下三个功能

  1. Startup:是否在系统启动时自启动Alfred。神器,默认勾上,不解释。
  2. Alfred Hotkey:调出Alfred操作界面的热键。默认为**Alt + 空格**。
  3. Where are you:你在哪个国家。Alfred内置了常用网站搜索功能,在搜索时打开对应国家的网站。

macOS 自带了搜索工具 Spotlight, 但是功能相对于 Alfred 就弱爆了,它默认的快捷键是 cmd+space,我们最好禁用它,进入 系统偏好设置-键盘-快捷键-聚焦,然后取消勾选 显示“聚焦”搜索

image-20220406150658870

并且将 Alfred 的热键也设为 cmd+space,设置开机启动。

image-20220406150818585

1.2.3 Features设置

Alfred几乎所有搜索功能都在这个界面设置。免费用户(没有购买Powerpack开启Workflows)重点关注的地方了。

Features包含的所有功能,本文不打算讲解所有的功能,只讲解最常用的。如:Default Results、Web Search、Calculator等。

1.2.3.1 Default Results设置

image-20220406154642595

  1. 应用程序:可设置应用匹配的方式。
  2. 基本:可设置搜索“系统偏好设置”、“通讯录”。
  3. 高级:可设置搜索“文件夹”、“文档”、“文本文件”、“图片”、“压缩包”、“AppleScript”等其他文件。
  4. 强烈不推荐:搜索所有文件类型。若勾选此项不但影响巡查速度,还混淆默认搜索结果。推荐使用“open”和“find”来打开文件和显示文件。
  5. 搜索范围:设置Alfred查询时会搜索的文件夹范围,可自己添加和删除。
  6. 智能推荐:当Alfred查找无果时,就会调用这里设置的网站或搜索引擎来进行进一步的查询。默认反馈结果为Google、Amazon、Wikipedia网页搜索。
1.2.3.2 Web Search设置

image-20220406160402420

Keyword为Alfred命令/关键字;DisplayText为此搜索功能的标题;Custom有图标表示这个为用户自定义;Enabled为是否启用。

Alfred网站搜索的设置,是使用最频繁的功能。在图中可看到Alfred默认设置了很多搜索网站,但几乎都是国外网站,因为天朝特色,很多都是我们用不上,因此需要添加自定义的搜索设置。

添加自定义搜索

以百度为例:

image-20220406161003255

只要在对应的网站上搜索一次,记下当时的网址,并把具体的搜索内容改为{query}就可以找到我们自定义搜索设置中所需要的Search URL信息了。常用的一些自定义搜索配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#百度
https://www.baidu.com/s?ie=utf-8&f=8&wd={query}
#简书
http://www.jianshu.com/search?utf8=%E2%9C%93&q={query}
#淘宝
http://s.taobao.com/search?oe=utf-8&f=8&q={query}
#京东
https://search.jd.com/Search?keyword={query}&enc=utf-8&wq={query}
#微信文章
http://weixin.sogou.com/weixin?type=2&query={query}
#stackoverflow
http://www.stackoverflow.com/search?q={query}
#github
https://github.com/search?utf8=%E2%9C%93&q={query}
#maven
http://mvnrepository.com/search?q={query}
#豆瓣电影
http://movie.douban.com/subject_search?search_text={query}&cat=1002
#B 站
http://search.bilibili.com/all?keyword={query}
#知乎
https://www.zhihu.com/search?type=content&q={query}
#什么值得买
https://search.smzdm.com/?s={query}&v=b
1.2.3.3 Web Bookmarks设置

Web Bookmarks的作用就是快速搜索我的书签,当浏览器没有打开、你正在做其他工作时想要快速打开你浏览器中的某个书签,这时候你只需要快速启动 Alfred->搜索书签的关键字->Enter 打开该书签。又是一气呵成的操作!

我设置了一个关键字 bm,寓意 bookmarks,用来表示我目的是搜索书签:

image-20220406172548806

1.2.3.4 Clipboard History设置

有了 Alfred 的剪贴板增强,两个场景最常用:

  1. 当你需要大段编辑文字、敲代码时,不需要反复在两个页面复制、切换页面、粘贴……只需要在一个页面将想要复制的内容复制好,然后切换页面,刚刚你复制的历史片段都可以看到,大大提高了文本编辑的效率!
  2. 当你需要快速找到某一天你复制过的片段时,只需要输入关键字在剪贴板历史中搜索即可~

可以根据自己的喜好设置保存时间和快捷键

image-20220406173602497

1.2.3.5 Snippets设置

有一些文本是需要反复输入的,比如你的邮箱、QQ号、地址、手机号码、某个网址等信息,亦或者聊天常用语句、表情等等,这些都可以通过 Alfred 来管理,节省输入时间。

image-20220406174638805

这个功能很强大,不止描述的那么简单。

Alfred 官网 Snippets 提供了集合片段集合,下载后双击文件即可导入到 Alfred 中。

  • Emoji Pack
  • Mac Symbols

例如,我们有时候变基文本时经常需要输入 Mac 上的一些按键符号⌘:

1.2.3.6 System设置

这个设置也很实用,通过在 Alfred 中输入一些命令来实现系统的操作,比如输入 Empty Trash 就是清空垃圾箱。不用担心记不住命令,因为 Alfred 是支持联想的。

image-20220406175446031

常用的有:

  • emptytrash:清空垃圾箱
  • lock:锁定屏幕
  • slppe:休眠
  • restart:重启
  • shutdown:关机
  • eject:快速推出一些外界设备,比如 U 盘、挂载的镜像
1.2.3.7 Terminal设置

可以直接在 Alfred 中输入 > 之后,指定 shell 命令在 Terminal 中执行。

image-20220406175725838

默认情况是在 Mac 自带的 Terminal 中执行命令,如果你想在 iterm 中执行,则需要通过如下命令自定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
on alfred_script(q)
tell application "iTerm"
set _length to count window
if _length = 0 then
create window with default profile
end if
set aa to (get miniaturized of current window)
if aa then
set miniaturized of current window to false
end if
set bb to (get visible of current window)
if bb is false then
set visible of current window to true
end if
set cc to frontmost
if cc is false then
activate
end if
(*if _length = 0 then*)
set theResult to current tab of current window
(*else
set theResult to (create tab with default profile) of current window
end if*)
write session of theResult text q
end tell
end alfred_script
1.2.3.8 Previews设置

Mac 预览功能也叫 Quick Look。当我们在 Finder 中选中一些文件之后,按住 Space/空格键 键,可以预览文件内容。Alfred 中这个预览功能叫 Preview。当我们在 Alfred 搜到一些文件之后,按一下 Shift 按键,就可以预览对应文件内容。同时,在 Finder 中,也可以通过 Alfred 提供的预览功能预览文件,对应快捷键是 Command+y

image-20220406180131135

1.2.4 Workflows设置

workflow 是一个类似工作流的功能,它可以根据你预设的流程进行一系列的操作来帮你实现一个功能。

1.2.4.1 Dash

打开Dash软件, Dash -> Preferences -> Integration点击Alfred图标即可完成安装。

image-20220406165306997

1.2.4.2 有道翻译

YoudaoDict 有道翻译

image-20220406180934818

1.2.4.3 查看本机 IP

**ip address**:查看本机 IP

1.2.4.4 Alfred - OCR and Translation

Alfred - OCR and Translation 文字识别和翻译

二、安装Dash

Dash 是一款功能强大的API文档浏览器和代码片段管理器,内置了丰富的API文档,多达150多种,可以在线下载各种开发API和文档资料,可以让您集中管理API文档,包括离线下载、搜索、查阅,包括各种主流的编程语言和框架,如Cocos2D, Cocos3D, Corona, CSS, HTML, Java, Objective-C, JavaScript, jQuery, Vue,React等, 不需要在到处下载 API 文档,Dash 已经自动集成了,并支持集成到Webstrom、Xcode、Alfred等软件中,非常的强大!开发者必备的API文档参考工具。

2.1 下载Dash

2.2 基本功能

Dash 对自身的定位是一款面向开发人员的文档查询工具。而事实上,无论是从易用性还是实用性上,Dash 都是极其强大的。简略概括如下:

  • 离线文档查阅:快速方便的 API 索引,包含 Java、JavaScript、iOS 等语言及库的文档及官方入门。
  • 第三方工具集成:与各个工具及编辑器 、IDE无缝集成,还有 jetBrain 家族、Xcode、Alfred 等等,你用的都在里面。
  • 自定义数据来源:已经包含 Google、Stack Overflow,你还可以自定义来自诸如 Medium、Quora 等任何你需要的网站。
  • 注释功能:方便快速的注释、标记功能。
2.2.1 离线文档查阅

dash 首先是一款文档查询工具,这也是它最核心的地方。它基本上覆盖了所有主流及部分非主流语言、框架和库的文档,多数文档都来源于这些语言的官方,因此也包含了很多官方的入门介绍。

我们重点说说 API 查询。在 Dash 里查询 API 非常简单,你愿意的话可以在所有的已下载文档当中检索,或者通过双击选中某一个特定的文档之后,再输入关键字进行检索,这种情况下检索范围将会锁定在该文档内。Dash 的检索效率非常高,基本上都是秒出结果的。

image-20220407100437197

2.2.2 第三方工具集成

出于作为一款开发及效率工具的定位,Dash 针对许多的工具与 IDE 都做了无缝集成。基本上你有用到的、你会用到的工具都在官方支持之列了。插件的安装方法在其 GitHub 对应的各个 Repository 上都有详细的安装指导,点击这上面对应的工具图标就可以找到了。

image-20220407100542370

以 Alfred 为例,甚至无需额外的步骤,点击图标之后会自动跳转到 Alfred,点击导入就安装好了。集成 Dash 之后索引甚至不用打开应用本身,不要太方便。

image-20220407100625631

2.3 基于HTML文档生成docset

Docsets 本质上只是一个包含 HTML 文档和索引文件的 SQLite 数据库的文件夹。

如果您要索引的 HTML 文档格式正确,则使用Dashingdash-docset-builder生成文档集可能更容易,而不是编写自己的生成脚本。

基于HTML文档生成docsets,主要分以下五步:

  1. Create the Docset Folder;建一个文件夹价格docset的后缀

  2. Copy the HTML Documentation;复制html文件到Documentations文件夹

  3. Create the Info.plist File;创建首页文件

  4. Create the SQLite Index;创建SQLite索引表

  5. Populate the SQLite Index;插入索引数据

2.3.1 基于Dashing生成文档集

Dashing 是一个通用工具,用于从一些 HTML 文档开始并生成 Dash 文档。

Dashing 使用 CSS3 选择器标记 HTML 文档以导入 Dash。它为您生成一个完整的文档集。

2.3.1.1 下载dashing
1
2
#下载dashing
brew install dashing
2.3.1.2 Dashing用法
1
2
3
4
5
6
#创建一个用于存放文档的目录
mkdir -p .Dash/mydocs
#切换到要在其中生成文档的目录
cd .Dash/mydocs
#执行create命令,生成一个dashing.json
dashing create

你执行完dashing create之后会产生一个dashing.json文件,你需要修改对应信息。后面执行dashing build命令时,会基于dashing.json来创建文档;

dashing.json格式如下所示(以nginx文档为例):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"name": "Nginx",
"package": "nginx",
"index": "index.html",
"selectors": {
"dt a": "Command",
"title": "Package"
},
"ignore": [
"ABOUT"
],
"icon32x32": "/Users/mike/Documents/Wallpaper/nginx.png",
"allowJS": false,
"externalURL": "https://tengine.taobao.org/book/"
}
  • name:名称
  • package:包名
  • index:现有文档中的默认索引文件
  • icon32x32:一个 32x32 像素的 PNG 图标
  • externalURL:文档的基本 URL
  • selectors:选择器的映射。有一种简单的格式和一种更高级的格式。
  • ignore:要忽略的匹配列表

这里需要注意的是你要提前下载icon图片到你文件夹中(favicon.png),还要必须写”package”这个属性,不然会生成不了(我也是开始没命名这个,后面去issue里才知道),然后执行以下命令:

1
2
#执行命令
dashing build mydocs

您现在将拥有一个名为的目录nginx.docset,其中包含 Dash 所需的所有文档。有关更多信息,请运行dashing help.

image-20220407162423830

2.3.2 复制 HTML 文档

将 HTML 文档复制到此文件夹 nginx.docset/Contents/Resources/Documents

1
2
3
4
#切换到Documents目录
cd ~/.Dash/mydocs/nginx.docset/Contents/Resources/Documents
#镜像站点
wget -r -p -k -np https://tengine.taobao.org/book/
2.3.3 修改info.plist文件
1
vim ~/.Dash/mydocs/nginx.docset/Contents/Info.plist
2.3.4 创建SQLite索引

<docset name>.docset/Contents/Resources/docSet.dsidx使用以下查询在文件中创建 SQLite 数据库:

1
CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT);

推荐:您也可以使用以下查询轻松防止向索引添加重复条目:

1
在 searchIndex(名称、类型、路径)上创建唯一索引锚;
2.3.5 填充 SQLite 索引

您需要创建一个脚本(或应用程序或其他),它将通过您的 HTML 文档并将适当的行添加到 SQLite 数据库中。可以使用此查询添加行:

1
插入或忽略搜索索引(名称,类型,路径)值(“名称”,“类型”,“路径”);

这些值为:

  • name是条目的名称。例如,如果您要添加一个类,它将是该类的名称。这是 Dash 搜索的列。
  • type是条目的类型。例如,如果您要添加一个类,它将是“类”。有关 Dash 识别的类型列表,请参见下文。
  • path是您希望 Dash 为该条目显示的文档文件的相对路径。它可以包含一个锚点 (#)。另外,Dash 还支持http://URL 条目。

您可以在此处找到一些生成脚本示例。

参考文档:https://kapeli.com/docsets#contributetodash