程序员的 Mac 高效手册

环境相关

右键开启 Terminal

 系统偏好设置 > 键盘 > 快捷键 > 服务,勾选 “新建位于文件夹位置的终端窗口”

右键创建新文件

 安装 “New File Menu

管理员权限打开 APP

1
$ sudo open -a AppName

iTerm2 中用 Finder 打开当前目录

1
$ open .

配置 PATH 环境变量

1
2
3
4
5
6
# 环境变量的加载顺序是 /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc

$ vim /etc/profile
export PATH=$PATH:<PATH>

$ source /etc/profile

查看本机 IP

1
2
$ ifconfig | grep "inet " | grep -v 127.0.0.1
inet 8.8.8.8 netmask 0xfffff800 broadcast 8.8.8.8

轻点触摸板

Soft click on mac touch board

(对 Mac™ 的截图)

Java 相关

查看 JDK 安装目录

1
2
3
4
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
1.8.0_171, x86_64: "Java SE 8"
/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home

Tips: 更多 Java 实用技巧,详见《那些绕不过去的 Java 知识点

Maven 相关

权限不足导致下载失败

描述

 报错无法解析依赖,找不到 xxx.lock 文件

解决

 对 Maven 的依赖文件存放目录赋权即可

1
$ sudo chown -R benedictjin:wheel /data/maven/repo

Tips: 更多 Maven 实用技巧,详见《Maven 高级玩法

命令相关

ccat

 操作类似 cat 命令,但是高亮了输出

1
2
3
4
5
# 使用 brew 安装
$ brew install ccat

# 查看最后一次的代码修改
$ git diff HEAD^ | ccat

fd

 简化了 find 命令,使用起来更加简单高效,还会自动忽略隐藏目录(如 .git/.deploy_git/ 等)

1
2
3
4
5
6
7
8
9
10
# 使用 brew 安装
$ brew install fd

$ fd xml
pom.xml
processing/pom.xml
server/pom.xml
services/pom.xml
sql/pom.xml
# ...

htop

 增强了 top 命令,展示页面更加丰富

1
2
3
4
# 使用 brew 安装
$ brew install htop

$ htop

tldr

 强化 man 命令,对展示的文档进行了简化,并展示了对应的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 使用 npm 安装
$ npm install -g tldr

# 查看 cd 命令的使用文档
$ tldr cd
✔ Page not found. Updating cache...
✔ Creating index...

cd

Change the current working directory.

- Go to the given directory:
cd path/to/directory

- Go to home directory of current user:
cd

- Go up to the parent of the current directory:
cd ..

- Go to the previously chosen directory:
cd -

brew

1
2
3
4
5
6
7
8
9
10
11
# 使用国内的镜像
$ cd "$(brew --repo)"
$ git remote set-url origin git://mirrors.ustc.edu.cn/brew.git

$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
$ git remote set-url origin git://mirrors.ustc.edu.cn/homebrew-core.git

$ brew update

$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile

工具相关

Sublime

删除重复行

1
2
# ⌥+⌘+F 打开替换模式,并打开正则表达式的开关
^(.+)$[\r\n](^\1$[\r\n]{0, 1})+

iTerm2

自动补全只能看到一个字符

 如果发现自动提示的命令只能展示出一个字符,则说明 ANSI Colors 里面第一行的 Normal 和 Bright 颜色过于相近

scp 报错 cannot change locale (UTF-8)

 使用 zsh 替代了 Mac 上原生的 bash 之后,本地化的设置默认是没有配置的,可以通过 locale 命令来检查。解决方法也很简单,具体操作如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ vim ~/.zshrc
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

$ source ~/.zshrc
$ locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

删除 zsh 历史记录

1
$ echo "" > ~/.zsh_history & exec $SHELL -l

Intellij IDEA

debug 启动的时候,卡在了 Finished, saving caches

1
2
3
4
5
6
7
# 获取 Mac 的 hostname
$ hostname
BenedictJin.local

# 添加到 hosts 文件,即可解决
$ sudo vim /etc/hosts
127.0.0.1 localhost BenedictJin.local

Typroa

支持 callout

 首先通过 ⌘, 快速打开 Typroa 的控制面板,依次点击 General - Open Theme Folder 按钮,打开 theme 目录,并在该目录下新建 base.user.css 文件,填写如下内容:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
div[style^='callout:'] {
padding: 20px;
margin: 20px 0;
border: 1px solid #eee;
border-left-width: 6px !important;
border-radius: 3px;
}
div[style^='callout:'] h4 {
margin-top: 0;
margin-bottom: 1em;
}
div[style^='callout:'] p:last-child {
margin-bottom: 0;
}
div[style^='callout:'] code {
border-radius: 3px;
}
div[style^='callout:']+div[style^='callout:'] {
margin-top: -5px;
}
div[style='callout:default'] {
border-left-color: #777 !important;
}
div[style='callout:default'] h4 {
color: #777 !important;
}
div[style='callout:primary'] {
border-left-color: #428bca !important;
}
div[style='callout:primary'] h4 {
color: #428bca !important;
}
div[style='callout:success'] {
border-left-color: #5cb85c !important;
}
div[style='callout:success'] h4 {
color: #5cb85c !important;
}
div[style='callout:danger'] {
border-left-color: #d9534f !important;
}
div[style='callout:danger'] h4 {
color: #d9534f !important;
}
div[style='callout:warning'] {
border-left-color: #f0ad4e !important;
}
div[style^='callout:warning'] h4 {
color: #f0ad4e !important;
}
div[style^='callout:info'] {
border-left-color: #5bc0de !important;
}
div[style^='callout:info'] h4 {
color: #5bc0de !important;
}

重启 Typroa 之后,即可使用 callout 功能:

1
2
3
4
5
<div style="callout:default">default</div>
<div style="callout:primary">primary</div>
<div style="callout:success">success</div>
<div style="callout:warning">warning</div>
<div style="callout:info">info</div>

效果如下:

Markdown Callout in Typroa

(对 Typroa™ 的截图)

Chrome

Octotree 代码大纲

Octotree

(对 Github™ 的截图)

Isometric Contributions 可视化

asdf2014 on Isometric Contributions

(对 Github™ 的截图)

asciinema

Quick Start

1
2
3
4
$ brew install asciinema
$ asciinema rec
# 录制成功后,exit 退出即可
# 支持保存在本地,或发布在 asciinema.org 网站上

鉴权

 如果你担心发布在网上,存在隐私问题。你可以注册 ascinema 的账号,并设置录制内容是否公开(默认为 private)

示例

1
2
3
4
5
6
$ asciinema rec
$ cd /tmp
$ vim open.sh
open 'https://yuzhouwan.com/'
$ sh open.sh
$ exit

转 gif

1
2
3
4
$ brew install imagemagick
$ brew install gifsicle
$ npm install --global asciicast2gif
$ asciicast2gif https://asciinema.org/a/246879.json 246879.gif

效果

Asciinema Example

(利用 Asciinema™ 录制而成)

快捷键

Mac 键盘符号

键盘符号含义
Command
Shift
Option
Control
↩︎Return / Enter
Delete
向前删除键(Fn + Delete)
上箭头
下箭头
左箭头
右箭头
Page Up(Fn + ↑)
Page Down(Fn + ↓)
Fn + ←Home
Fn + →End
右制表符(Tab 键)
左制表符(Shift + Tab)
Escape(Esc)

Mac 本身相关

访问隐藏目录

 在 Finder 里面同时按 Command + Shift + G 即可输入隐藏目录,如 /usr/bin/java

Vim 相关

快捷键含义
⌃F下翻页
⌃B上翻页
⌃F下翻页
⌃B上翻页
⇧M将光标移动的该页中部
GG回到文件顶部
⇧G回到文件底部
HJKL移动光标(HL: 左右;JK: 上下)

Tips: 更多 Vim 实用技巧 和 完整快捷键 详见《Linux 实战技巧》的 vimcheat sheet 部分

Intellij Idea 相关

Editing(编辑)

快捷键含义
⌃Space基本的代码补全(补全任何类、方法、变量)
⌃⇧Space智能代码补全(过滤器方法列表和变量的预期类型)
⌘⇧↩自动结束代码,行末自动添加分号
⌘P显示方法的参数信息
⌃J快速查看文档
⇧F1查看外部文档(在某些代码上会触发打开浏览器显示相关文档)
⌘+鼠标显示简要信息
⌘F1在错误或警告处显示具体描述信息
⌘N, ⌃↩生成代码gettersetter、构造函数、hashCode / equals / toString
⌃O覆盖方法(重写父类方法)
⌃I实现方法(实现接口中的方法)
⌘⌥T包围代码(使用 if..else, try..catch, for, synchronized 等包围选中的代码)
⌘/注释 / 取消注释与行注释
⌘⌥/注释 / 取消注释与块注释
⌥↑连续选中代码块
⌥↓减少当前选中的代码块
⌃⇧Q显示上下文信息
⌥↩显示意向动作和快速修复代码
⌘⌥L格式化代码
⌃⌥O优化 import
⌃⌥I自动缩进线
⇥ / ⇧⇥缩进代码 / 反缩进代码
⌘X剪切当前行或选定的块到剪贴板
⌘C复制当前行或选定的块到剪贴板
⌘V从剪贴板粘贴
⌘⇧V从最近的缓冲区粘贴
⌘D复制当前行或选定的块
⌘⌫删除当前行或选定的块的行
⌃⇧J智能的将代码拼接成一行
⌘↩智能的拆分拼接的行
⇧↩开始新的一行
⌘⇧U大小写切换
⌘⇧] / ⌘⇧[选择直到代码块结束 / 开始
⌥⌦删除到单词的末尾
⌥⌫删除到单词的开头
⌘+ / ⌘-展开 / 折叠代码块
⌘⇧+展开所以代码块
⌘⇧-折叠所有代码块
⌘W关闭活动的编辑器选项卡

Search / Replace(查询 / 替换)

快捷键含义
Double ⇧查询任何东西
⌘F文件内查找
⌘G查找模式下,向下查找
⌘⇧G查找模式下,向上查找
⌘R文件内替换
⌘⇧F全局查找(根据路径)
⌘⇧R全局替换(根据路径)
⌘⇧S查询结构(Ultimate Edition 版专用,需要在 Keymap 中设置)
⌘⇧M替换结构(Ultimate Edition 版专用,需要在 Keymap 中设置)

Usage Search(使用查询)

快捷键含义
⌥F7 / ⌘F7在文件中查找用法 / 在类中查找用法
⌘⇧F7在文件中突出显示的用法
⌘⌥F7显示用法

Compile and Run(编译和运行)

快捷键含义
⌘F9编译 Project
⌘⇧F9编译选择的文件、包或模块
⌃⌥R弹出 Run 的可选择菜单
⌃⌥D弹出 Debug 的可选择菜单
⌃R运行
⌃D调试
⌃⇧R, ⌃⇧D从编辑器运行上下文环境配置

Debugging(调试)

快捷键含义
F8进入下一步,如果当前行断点是一个方法,则不进入当前方法体内
F7进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则不会进入该内嵌的方法中
⇧F7智能步入,断点所在行上有多个方法调用,会弹出进入哪个方法
⇧F8跳出
⌥F9运行到光标处,如果光标前有其他断点会进入到该断点
⌥F8计算表达式(可以更改变量值使其生效)
⌘⌥R恢复程序运行,如果该断点下面代码还有断点则停在下一个断点上
⌘F8切换断点(若光标当前行有断点则取消断点,没有则加上断点)
⌘⇧F8查看断点信息
快捷键含义
⌘O查找类文件
⌘⇧O查找所有类型文件、打开文件、打开目录,打开目录需要在输入的内容前面或后面加一个反斜杠 /
⌘⌥O前往指定的变量 / 方法
⌃← / ⌃→左右切换打开的编辑 tab 页
F12返回到前一个工具窗口
从工具窗口进入代码文件窗口
⇧⎋隐藏当前或最后一个活动的窗口,且光标进入代码文件窗口
⌘⇧F4关闭活动 run / messages / find / … 的 tab 页
⌘L在当前文件跳转到某一行的指定处
⌘E显示最近打开的文件记录列表
⌘⌥← / ⌘⌥→退回 / 前进到上一个操作的地方
⌘⇧⌫跳转到最后一个编辑的地方
⌥F1显示当前文件选择目标弹出层,弹出层中有很多目标可以进行选择(如在代码编辑窗口可以选择显示该文件的 Finder)
⌘B / ⌘鼠标点击 进入光标所在的方法 / 变量的接口或是定义处
⌘⌥B跳转到实现处,在某个调用的方法名上使用会跳到具体的实现处,可以跳过接口
⌥ Space, ⌘Y快速打开光标所在方法、类的定义
⌃⇧B跳转到类型声明处
⌘U前往当前光标所在方法的父类的方法 / 接口定义
⌃↓ / ⌃↑当前光标跳转到当前文件的前一个 / 后一个方法名位置
⌘] / ⌘[移动光标到当前所在代码的花括号开始/结束位置
⌘F12弹出当前文件结构层,可以在弹出的层上直接输入进行筛选(可用于搜索类中的方法)
⌃H显示当前类的层次结构
⌘⇧H显示方法层次结构
⌃⌥H显示调用层次结构
F2 / ⇧F2跳转到下一个 / 上一个突出错误或警告的位置
F4 / ⌘↓编辑 / 查看代码源
⌥ Home显示到当前文件的导航条
F3选中文件 / 文件夹 / 代码行,添加 / 取消书签
⌥F3选中文件 / 文件夹 / 代码行,使用助记符添加 / 取消书签
⌃0…⌃9定位到对应数值的书签位置
⌘F3显示所有书签

Refactoring(重构)

快捷键含义
F5复制文件到指定目录
F6移动文件到指定目录
⌘⌫在文件上为安全删除文件,弹出确认框
⇧F6重命名文件
⌘F6更改签名
⌘⌥N一致性
⌘⌥M将选中的代码提取为方法
⌘⌥V提取变量
⌘⌥F提取字段
⌘⌥C提取常量
⌘⌥P提取参数

VCS(版本控制)

快捷键含义
⌘K提交代码到版本控制器
⌘T从版本控制器更新代码
⌥⇧C查看最近的变更记录
⌃C快速弹出版本控制器操作面板

Live Templates(动态代码模板)

快捷键含义
⌘⌥J弹出模板选择窗口,将选定的代码使用动态模板包住
⌘J插入自定义动态代码模板

General(通用)

快捷键含义
⌘1…⌘9打开相应编号的工具窗口
⌘S保存所有
⌘⌥Y同步、刷新
⌃⌘F切换全屏模式
⌘⇧F12切换最大化编辑器
⌥⇧F添加到收藏夹
⌥⇧I检查当前文件与当前的配置文件
§⌃, ⌃`快速切换当前的 scheme(切换主题、代码样式等)
⌘,打开 IDEA 系统设置
⌘;打开项目结构对话框
⇧⌘A查找动作(可设置相关选项)
⌃⇥编辑窗口标签和工具窗口之间切换(如果在切换的过程加按上 delete,则是关闭对应选中的窗口)

Other

快捷键含义
⌘⇧8竖编辑模式
⌥⇧U装上 CamelCase 插件之后,切换变量的驼峰法命名
⌃⌘U装上 Translation 插件之后,可以快速翻译
⌃⌘O装上 Translation 插件之后,可以翻译并替换
⌥S装上 OnlineSearch 插件之后,可以配置为该快捷键
⌘⌥⇧/使用 2018.3 EAP 版本时候,开启 JVM Profile 功能

资源

Blog

软件

高效

mathodology

common

iTerm2

Sublime

图像

素材

图标

纹理背景

地图图表

护眼

欢迎加入我们的技术群,一起交流学习

人工智能 (高级)& (进阶)| BigData | 算法

Benedict Jin wechat
Subscribe to my blog by scanning my public wechat account.