Homebrew
Homebrew 是一款 Mac 系统下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。
Homebrew 安装
先使用 Mac 自带的终端 Terminal 下载 Homebrew【就像在一个新的 Windows 电脑中用 IE 下载 Chrome 一样】
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Homebrew 两大用途
1. 安装命令行软件包
brew install <soft-name>
2. 安装图形界面软件
brew install --cask <soft-name>
Homebrew 常用命令
| 安装命令行软件包 | brew install |
| 安装图形界面软件 | brew install —cask |
| 搜索软件 | brew search |
| 卸载命令行软件包 | brew uninstall |
| 卸载图形界面软件 | brew uninstall —cask |
| 更新所有软件 | brew update |
| 更新具体软件 | brew upgrade |
| 显示已安装软件 | brew list |
| 查看软件信息 | brew info |
| 查看需要更新的已安装软件 | brew outdated |
Homebrew 注意事项
- Homebrew 每次安装软件包时都会进行自动更新,可以使用 Ctrl + C 跳过自动更新;或将
export HOMEBREW_NO_AUTO_UPDATE=true添加到~/.zshrc文件中,关闭 Homebrew 的自动更新。【.zshrc会在后面提到】 - Homebrew 安装的软件会放在
/usr/local/Cellar/目录下,有些应用也会自动创建软链接放在/usr/bin或者/usr/sbin下,想要找软件路径,可以在这些位置下寻找。
也可以使用brew list <soft-name>确定软件的安装位置。 - 更多用法及参考可至官网 brew.sh/index_zh-cn…
iTerm2
iTerm2 是 Mac 上默认终端 Terminal 的替代品,也是目前 Mac 系统下最好用的终端工具,集颜值与效率于一身。
iTerm2 安装
继续使用 Mac 自带的终端 Terminal 下载 iTerm2【iTerm2 下载好之后就可以让自带的 Terminal 卸甲归田了】
brew install --cask iterm2
iTerm2 的强大功能
iTerm2 有很多强大的功能,比如分屏、多窗口、自动填充、智能选中等,但这其中,最让我感到舒适的就是分屏与多窗口了,这得益于 iTerm2 默认集成了 tmux。
- 分屏 & 多窗口
| 快捷键 | 用途 | 快捷键 | 用途 |
|---|---|---|---|
| ⌘ D | 垂直分屏 | ⌘ [ | 上一个分屏 |
| ⌘ ⇧ D Command + Shift + D | 水平分屏 | ⌘ ] | 下一个分屏 |
| ⌘ ⌥ ↑/↓/←/→ Command + Option + 方向键 | 按方向切换分屏 | ||
| ⌘ T | 新建标签 | ⌘ 数字 | 按序号切换标签页 |
| ⌘ ←/→ Command + 左右方向 | 按左右方向切换标签页 | ||
| ⌘ N | 新建窗口 | ⌘ + ⇥ Command + Tab | |
| ⌘ W | 关闭分屏/标签/窗口 |
- 智能选中
-
- 双击选中单词
- 三击选中整行
- 四击智能选中
- 网址、邮箱、文件等可以按住 ⌘(Command) 键直接用鼠标点开
有一个非常贴心的功能是,在 iTerm 中,选中即复制,即任何选中状态的字符串都会被放到系统剪切板中。
iTerm2 的常用快捷键
| 快捷键 | 用途 |
|---|---|
| 如上⬆️ | 分屏与多窗口 |
| ⌃ A Control + A | 移动光标到行首 |
| ⌃ E | 移动光标到行尾 |
| ⌃ D | 删除光标之后的字符 |
| ⌃ W | 删除光标之前的单词 |
| ⌃ K | 删除光标之后的所有文本 |
| ⌃ U | 删除当前行 |
| ⌘ R | 清屏【只是滚动到新的一屏】 |
| ⌘ ⇧ H Command + Shift + H | 列出剪切板历史 |
| ↑/↓ | 切换历史命令 |
| ⌘ / | 高亮当前光标的位置 |
| ⌥ Space | 全局隐藏与唤醒 |
iTerm 配置迁移
为了防止以后更换设备时再次重新配置,可以将 iTerm 的配置导出放到 GitHub 上,下次直接一键导入配置。
Oh My Zsh
命令行是程序员的最爱,默认的 Bash Shell 虽然功能已经很强大,但显得太朴素了,也不够智能,远远谈不上酷炫,虽然已经远远将 Windows 的 Cmd 甩开几百条街。但对于极客来说,Bash 还是太弱了,长得也难看。
而 Zsh 的功能极其强大,只是配置过于复杂,起初只有极客才在用。后来,有个穷极无聊的程序员可能是实在看不下去广大猿友一直只能使用单调的 Bash, 于是他创建了一个名为 Oh My Zsh 的开源项目... 自此,只需要简单的安装配置,小白程序员们都可以用上高档大气上档次,狂拽炫酷吊炸天的 Oh My Zsh。
—— By oh-my-zsh,最好用的shell,没有之一
从 MacOS Catalina 版开始,Zsh 已经被设置为 Mac 上的默认 Shell 了;因此,不需要再额外安装 Zsh。【较低版本可使用 brew install zsh 进行 Zsh 的安装】
Oh My Zsh 安装
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装完成后,将默认配置文件拷贝一份到用户目录下,以便进行自定义配置⬇️。
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
利用 Oh My Zsh 来美化升级开发终端
- 主题
一个漂亮的主题可以使心情愉悦 10 倍,而一个愉悦的心情可以使开发效率提高 10 倍,所以,准备好做 100 倍程序猿了吗?
官方主题的使用非常简单,只需要打开配置文件 ~/.zhsrc,将其中 ZSH_THEME 的值改为所选的主题名称即可。如 :
ZSH_THEME="robbyrussell"
千万记得,在更改并保存
~/.zhsrc后,需要重新加载配置文件哦~【每次修改配置文件后,都需要再次加载配置文件才能生效】source ~/.zshrc
如果不想启用任何主题,只需将ZSH_THEME设置为空白即可 :ZSH_THEME=""
官方主题默认在${ZSH}/themes/目录下。
- 第三方主题 - powerlevel10k
从以往的经验来看,第三方提供的主题总是比官方主题要好看漂亮很多,因此,我毫不犹豫地使用了 powerlevel10k,同时也向大家推荐该主题,因为真的好看 。效果如下 :
安装
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# 中国用户可以使用 Gitee 镜像
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
安装完毕后需要更改配置文件 ~/.zshrc,将其中 ZSH_THEME 的值改为 powerlevel10k/powerlevel10k,如下 :
ZSH_THEME="powerlevel10k/powerlevel10k"
同时,记得重新加载配置文件哦~
source ~/.zshrc
第三方主题一般会被放到${ZSH}/custom/themes/目录下。
配置
输入 p10k configure 命令对 powerlevel10k 进行配置 :
- 插件
Zsh 相比 Bash 的一大优势是它可以集成各种各样的插件,而一个优秀的插件往往能使开发人员的效率成倍地提升;而 Oh My Zsh 的出现使得 Zsh 插件的安装更加简单、方便,大大增加了开发人员的幸福感。
git - 提供了许多 Git 命令的 alias 和有用的功能
该插件是 Oh My Zsh 默认提供且默认启用的。
值得一提的是,该插件的名字虽然是 git,但它并不是 Git,只是一些 Git 命令的 alias。
常用的 Alias :
| Alias | 对应的 Command |
|---|---|
| ga | git add |
| gb | git branch |
| gcmsg gc -m | git commit -m |
| gco | git checkout |
| gcp | git cherry-pick |
| gd | git diff |
| ggl | git pull origin $(current_branch) |
| ggp | git push origin $(current_branch) |
| gpsup | git push --set-upstream origin $(git_current_branch) |
| gst | git status |
| gup | git pull --rebase |
| 完整列表:github.com/ohmyzsh/ohm… |
extract - 解压文件,而不必关心压缩文件的类型
常常因为不同的压缩文件类型而寻找对应的解压工具,但总是找不到一个满意的工具;如今,extract 来了,再也不用关心压缩文件的类型了,它几乎支持所有常见的压缩文件类型。
启用:
extract 是 Oh My Zsh 默认提供的,但并没有默认开启,因此需要在配置文件 ~/.zshrc 中添加 extract 到 plugins 中 :plugins=( [plugins...] extract) 进行启用。
记得重新加载配置文件 ~/.zshrc
用法:
extract <file-name>
官方插件一般会被放到
${ZSH}/plugins/目录下。
zsh-syntax-highlighting - 语法高亮
安装:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
在配置文件 ~/.zshrc 中添加 zsh-syntax-highlighting 到 plugins 中 :plugins=( [plugins...] zsh-syntax-highlighting)
记得重新加载配置文件 ~/.zshrc
效果:
zsh-autosuggestions - 自动命令建议
安装:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
在配置文件 ~/.zshrc 中添加 zsh-autosuggestions 到 plugins 中 :plugins=( [plugins...] zsh-autosuggestions)
记得重新加载配置文件 ~/.zshrc
效果:
社区插件一般会被放到
${ZSH}/custom/plugins/目录下。
内置 Shell 命令增强
bat - 替换 cat
相比较传统 cat 命令的单调,bat 支持大量编程语言及文件的语法高亮显示,大大提高了文件的查看效率及体验。
效果:
安装:
brew install bat
exa - 替换 ls
相比较传统的 ls 命令,添加了语法高亮,增强了用户体验。
效果:
安装:
brew install exa
fd - 替换 find
相比传统的 find 命令,fd 更快、更智能,且添加了彩色输出。
效果:
安装:
brew install fd
rg - 替换 grep
用于替代 grep 的文本搜索工具,特点是:快!很快!非常快!
效果:
安装:
brew install ripgrep
10 倍程序猿工具
asdf - 使用单个工具对多个运行时进行版本管理
对于使用多种编程语言进行开发工作的程序猿们来说,「到底使用哪个版本管理器?」一直是一个非常令人困扰的问题。
- 管理 Node 版本,到底使用 nvm 呢?还是使用 n?还是 nodenv?
- 管理 Ruby 版本,到底使用 rbenv 呢?还是使用 rvm?
- 管理 Java 版本,到底使用 jabba 呢?还是使用 jenv?
但有了 asdf 后,困扰将不复存在,通过 asdf,可以对多种不同的语言或工具进行版本管理,简直是开发必备。
- asdf 安装
brew install asdf
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
- asdf 常用命令
| 命令 | 作用 | |
|---|---|---|
| asdf plugin list all | 列出所有支持的插件 | |
| Example: asdf plugin list all | grep java | 快速知道 java 是否被支持 |
| asdf plugin add [] | 安装插件 | |
| asdf list all | 列出语言所有支持的版本 | |
| asdf install | 安装指定的语言版本 | |
| asdf list | 列出已安装的语言的所有版本 | |
| asdf list | 列出所有已安装的语言和版本 | |
| 切换语言版本⬇️ | ||
| asdf shell | 在当前的 shell 会话中临时进行切换 | |
| asdf local | 在当前目录之下使用特定的版本 这个命令在当前文件夹下生成一个 .tool-version 文件记录指定的语言和版本号,这样下回再从命令行访问改目录的时候,就会自动切换到对应的语言版本 | |
| asdf global | 全局设置默认的语言版本 这个命令在用户的 $HOME 文件夹下生成一个 .tool-version 文件记录默认的语言和版本号 | |
| 更多用法: asdf-vm.com/manage/comm… |
fzf - 命令行模糊查找神器
模糊查找神奇,不管是历史命令,还是文件、进程、Git Commit 等都可以快速查找到,可以说是记性不好的人的福音了 。
- fzf 安装
brew install fzf
安装完毕后,需要在 Zsh 的配置文件 ~/.zshrc 中添加 fzf 到 plugins 中 :plugins=( [plugins...] fzf)
fzf 是 Oh My Zsh 官方提供的一个插件,主要用于绑定 fzf 的快捷键。
为什么使用该插件,而不是 fzf 官方提供的脚本呢?是因为截止笔者写下该文章的时间,官方提供的脚本好像有点问题,Ctrl + C 的快捷键一直绑定不上,虽然在一个 issue 里有人解决了这个问题,但是不如 Oh My Zsh 提供的插件方便。
- fzf 最常用的功能
-
- Ctrl + C:查找以往使用过的命令历史
- Ctrl + T:在当前路径及子路径下查找文件
- 更多有用功能可以看官方文档
nnn & ranger - 命令行文件资源管理器
Mac 上自带的 Finder 太难用这是大家都知道的,而作为一个程序猿,很多时候真的不喜欢用 Finder,因此,一个命令行的文件管理器就显得格外讨喜。
而 nnn 与 ranger 是两个比较流行的命令行文件管理器,风格却不一样,可以根据喜好进行选择。
- nnn 安装
brew install nnn
- ranger 安装
brew install ranger
tig - 一款优化 git 命令行的工具,使 git 命令行更加人性化
- tig 安装
brew install tig
- tig 最简单的用法
对我来说,tig 最简单的用法就是在命令行直接输入 tig 命令,它代替了长长的一串 git log —oneline,同时在显示页面中信息是呈交互式显示的,而且还可以在选中时看到某一条 commit 具体的改动,非常方便。
当然,tig 还有很多方便的功能,就不一一介绍了,可以看官方文档
tldr - Too Long; Didn't Read
Linux 世界中的命令总是充斥着大量的子命令、参数、选项等。但一个正常人是根本不可能记住所有命令的所有选项及参数的,而 man 手册又臭又长,根本不想看;因此,tldr 出现了,它提供了一些命令最经典、最常用的几种用法,让使用者在最短的时间内熟悉某个“陌生”的命令。
- tldr 效果
- tldr 安装
brew install tldr
- tldr 用法
tldr <command>
The Fuck - 纠正上一条命令的拼写错误
- The Fuck 效果
- The Fuck 安装
brew install thefuck
安装完毕后,需要在配置文件 ~/.zshrc 末尾添加一行配置以启用 thefuck 的Alias fuck :
eval $(thefuck --alias)
记得重新加载配置文件 ~/.zshrc
z.lua - 自动跳转目录,比 autojump 快 10 倍
z.lua 是一个快速路径切换工具,比 autojump 快接近 10 倍。【而这也是在 Oh My Zsh 插件部分没有推荐 autojump 的缘故】
- z.lua 安装
brew install z.lua
安装完毕后,需要在配置文件 ~/.zshrc 末尾添加一行配置以开启 z.lua :
eval "$(lua /usr/local/Cellar/z.lua/<z.lua-version>/share/z.lua/z.lua --init zsh once enhanced)"
注意上面的
<z.lua-version>需要替换成真实的版本哦~
记得重新加载配置文件~/.zshrc
- z.lua 用法
z <目标路径中包含的单词> # 跳转到最匹配的路径【前提是你以前进入到过该路径】
# 更多用法可以参考 z.lua 官方文档: https://github.com/skywind3000/z.lua