iTerm2 用法与技巧
iTerm2 is a replacement for Terminal and the successor to iTerm. It works on Macs with macOS 10.10 or newer. iTerm2 brings the terminal into the modern age with features you never knew you always wanted.
# 安装 iTerm2
下载的是压缩文件,解压后是执行程序文件,你可以直接双击,或者直接将它拖到 Applications
目录下。
或者你可以直接使用 Homebrew
进行安装:
brew cask install iterm2
在进行下面步骤前,想先安利一下这篇文章:终极 Shell (opens new window), 干货满满,有利于对下面操作的理解
# 配置 iTerm2 主题
iTerm2
最常用的主题是 Solarized Dark theme
, 首先,使用以下命令下载 Solarized
配色方案 (将配色方案下载到「下载」文件夹中):
cd ~/Downloads && git clone git://github.com/altercation/solarized.git
如果下载不了,可以试试这个方法:快到飞起!一键搞定 GitHub 下载加速! · Issue #29 · HenryTSZ/hello-world (opens new window)
然后打开 iTerm2
, 按 Command + ,
键打开 Preferences
配置界面,然后 Profiles -> Colors -> Color Presets -> Import
, 在弹出的窗口中,定位到 Downloads > solarized > iterm2-colors-solarized
, 双击 Solarized Dark.itermcolors
导入暗色的 Solarized
配色方案。就可以了。
如果你有强迫症,下载的文件可以删除
# 配置 Oh My Zsh
Oh My Zsh
是对主题的进一步扩展,地址 (opens new window), 当然他的强大之处并不局限在主题这一处
一键安装:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装好之后,需要把 Zsh
设置为当前用户的默认 Shell
(这样新建标签的时候才会使用 Zsh
):
chsh -s /bin/zsh
执行命令后,会让你输入电脑的密码,输入即可。
如果提示 chsh: no changes made
错误,那我们尝试用 sudo chsh -s /bin/zsh
再试一次
如果还是不行,就不用再弄了,直接用下面的方法吧
dscl . -read /Users/$USER/ UserShell
exec su - $USER
2
然后再输入密码即可。
完成后,需要完全退出 iTerm2
, 再次进入时,就已经从 bash
切换到 zsh
了。
查看当前 shell
: echo $SHELL
当然,如果你哪一天又想用 bash
了,也可以使用下列命令:
chsh -s /bin/bash
切换成功后,退出,再次进入的时候就切换 bash
成功了,相互切换是不是很方便呢?
如果你想看看自己的机子上装了哪些 shell
, 可以使用如下命令:
cat /etc/shells
我的显示如下:
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
2
3
4
5
6
# 配置 Oh My Zsh 主题
我们编辑 vim ~/.zshrc
文件,将主题配置修改为 ZSH_THEME="agnoster"
.
在 vim
编辑器下,你可以使用方向键移动光标,按 i
进入编辑模式,编辑好后按 esc
退出编辑模式,随后输入 :wq
并回车即可保存。有关 Vim
的更多使用方法你可以参考这篇教程 (opens new window). 另外,Mac 下的 Vim
默认是没有显示行号 & 开启语法高亮的,你可以参考以下命令打开行号显示 & 语法高亮:
cp /usr/share/vim/vimrc ~/.vimrc # 复制 vim 配置模版
echo 'syntax on' >> ~/.vimrc # 开启语法高亮
echo 'set nu!' >> ~/.vimrc # 开启行号显示
2
3
Zsh
的配置文件中提供了详细的注释,你可以根据注释修改相关设置,满足自己的要求。
agnoster
是比较常用的 zsh
主题之一 (默认主题), 你可以挑选你喜欢的主题,zsh 主题列表 (opens new window)
效果如下 (配置了声明高亮):
不过我更喜欢 这个主题powerlevel9k
由于 powerlevel9k 对用户体验有很大影响,故现在推荐使用 powerlevel10k
P9k had a substantial impact on CLI UX, and its legacy is now continued by P10k.
# powerlevel10k
首先是下载主题:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
中国大陆用户可以使用 gitee.com 上的官方镜像加速下载。
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
然后编辑你的 ~/.zshrc
设置 ZSH_THEME="powerlevel10k/powerlevel10k"
.
对于新用户,在第一次运行时,Powerlevel10k 配置向导会询问您几个问题并配置您的界面样式。如果它没有自动触发,请键入 p10k configure
配置(配置完不满意还可以使用此命令重新配置),具体可以查看文档 (opens new window)
对于 Powerlevel9k 用户,如果您以前使用过 Powerlevel9k,请不要删除配置选项。Powerlevel10k 将选择它们并为您提供您习惯的相同提示 UI。
故以下本人关于 powerlevel9k 的配置仍保留,不过我以前的配置 10k 现在是默认的了,所以可以删除
如果您更喜欢 Powerlevel9k
外观以及右侧的退出代码和时间戳等附加信息,请运行:
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
然后编辑你的 ~/.zshrc
设置 ZSH_THEME="powerlevel9k/powerlevel9k"
.
以下为本人关于 powerlevel9k
的所有设置
# Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-zsh is loaded.
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="powerlevel9k/powerlevel9k"
# See https://github.com/Powerlevel9k/powerlevel9k/tree/next
POWERLEVEL9K_MODE='awesome-patched'
# Set username to consider a default context, which by default will not be shown.
# https://github.com/bhilburn/powerlevel9k/blob/next/segments/context/README.md
DEFAULT_USER='$USER'
# left and right element
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon root_indicator dir_writable dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs time)
# dir: /usr/share/plasma 截断为 /us/sh/plasma
# https://github.com/Powerlevel9k/powerlevel9k/blob/next/segments/dir/README.md
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_SHORTEN_DELIMITER=""
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_from_right"
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
详细的配置项可以看官方文档:Powerlevel9k/powerlevel9k at next (opens new window)
# 配置字体
如果您使用的是 iTerm2 或 Termux,p10k configure 可以为您安装推荐的字体。当被问及是否安装 Meslo Nerd Font 时,只需回答 y 即可。
其他终端请参考官方文档 (opens new window)
以下是 9k 使用的字体,保留一下吧
使用上面的主题,需要 SourceCodePro+Powerline+Awesome+Regular
字体支持,要不然会出现乱码的情况,字体下载地址:dotfiles/SourceCodePro+Powerline+Awesome+Regular.ttf at master · Falkor/dotfiles (opens new window)
下载好之后,直接在 Mac OS 中安装即可。
然后打开 iTerm2
, 按 Command + ,
键打开 Preferences
配置界面,然后 Profiles -> Text -> Font -> Chanage Font
, 选择 SourceCodePro+Powerline+Awesome+Regular
字体。
# 自定义提示样式
10k 貌似也没有这个提示了,如果发现还有,可以参考下面方法
默认情况下,提示符显示为 user@hostname
, 终端显示的时候会很不好看,如下图中的 daoquan@daoquandeMBP
, 我们可以手动去除。
# 方法一
编辑 vim ~/.zshrc
文件,增加 DEFAULT_USER="user"
配置 (DEFAULT_USER="user" 的 user 必须和提示符中的 user 匹配), 示例:
我们可以通过 whoami
命令,查看当前用户
或者直接用变量替换:DEFAULT_USER='$USER'
# 方法二
配置 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
(左侧提示元素)
默认值为:POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir vcs)
context
为 用户名和主机,去掉即可
变量具体含义见官方配置:Powerlevel9k/powerlevel9k: The most awesome Powerline theme for ZSH around! (opens new window)
# 指令高亮
zsh-syntax-highlighting (opens new window)
指令高亮效果作用是当用户输入正确命令时指令会绿色高亮,错误时命令红色高亮。
先克隆 zsh-syntax-highlighting
项目,到 zsh
插件目录:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
然后编辑 vim ~/.zshrc
文件,找到 plugins 配置,增加 zsh-syntax-highlighting
插件。
source 一下
# Source ~/.zshrc to take changes into account:
source ~/.zshrc
2
错误的命令显示红色:
# 历史命令自动建议填充
zsh-autosuggestions (opens new window)
这个功能是非常实用的,可以方便我们快速的敲历史命令。
使用方法:它根据命令历史记录建议输入命令。在键入命令时,建议命令在光标后呈现灰色显示,通过方向键 →
或 End
来替换命令行缓冲区的内容
配置步骤,先克隆 zsh-autosuggestions
项目,到指定目录:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
然后编辑 vim ~/.zshrc
文件,找到 plugins 配置,增加 zsh-autosuggestions
插件。
有时候因为自动填充的颜色和背景颜色很相似,以至于自动填充没有效果,我们可以手动更改下自动填充的颜色配置,我修改的颜色值为:586e75
, 示例:
# 历史命令匹配搜索
在命令行,我们可以使用上下方向键来切换历史命令,默认是在所有的历史命令中循环切换
而有时候我们想输入前几个字符,然后就在以这几个字符开头的历史命令之间切换,就可以使用自带的插件:history-substring-search
编辑 vim ~/.zshrc
文件,找到 plugins 配置,增加 history-substring-search
插件。
然后就可以输入前几个字符后,通过上下方向键切换了;当不输入字符时,仍然是在所有的历史命令中循环切换
# 快速切换历史路径
自带的插件:z (opens new window)
编辑 vim ~/.zshrc
文件,找到 plugins 配置,增加 z
插件。
然后就可以使用 z + 目录名
进行目录跳转了
第三方插件:
比自带的更高级一点,不过自带的本人感觉就够了
由于 macOS 12.3
及以上版本移除了 python 2,故如果要使用下面的 autojump
,需要自行安装 python,建议安装 python 3
而本人目前并不需要 python,故需要找一款替代产品
先安装:
git clone https://github.com/agkozak/zsh-z ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-z
然后编辑 vim ~/.zshrc
文件,找到 plugins 配置,增加 zsh-z
插件。
然后就可以使用 z + 目录名
进行目录跳转了
结果虽然跳转成功了,命令行却报错了:env: python: No such file or directory
原来是:
MacOS Monterey 12.3.1 升级后 cd 命令报 env: python: No such file or directory
解决方案如下:
ln -s /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/bin/python3 /usr/local/bin/python3
ln -s -f /usr/local/bin/python3 /usr/local/bin/python
2
详见官方帖子:MacOS Monterey 12.3 系统更新了自带的 python 问题 (opens new window)
那这样的话,autojump 又可以用了,无语。。。
安装了 autojump
之后,zsh
会自动记录你访问过的目录,通过 j + 目录名
可以直接进行目录跳转,而且目录名支持模糊匹配和自动补全,例如你访问过 hadoop-2.0.0
目录,输入 j hado
即可正确跳转。j –s
可以看你的历史路径库。
首先安装 autojump
, 在 macOS 中可以使用 brew
安装:
- brew install autojump
或者使用 git
下载 autojump
的最新版本,比如:
- git clone git://github.com/wting/autojump.git
解压缩后进入目录,执行
- ./install.py
然后编辑 vim ~/.zshrc
文件,找到 plugins 配置,增加 autojump
插件。
# iTerm 设置打开的默认路径 (opens new window)
先确定相对应的 shell
是 zsh
或者 bash
:
zsh
shell
: 在 iTerm
里执行以下代码
vim ~/.zshrc
bash
shell
: 在 iTerm
里执行以下代码
vim ~/.bash_profile
在上面两个其中之一的文件中输入以下代码:
cd /Users/mona/Documents
上面只是一个示例,具体路径自行配置
不过设置完默认打开路径,下面的在 Finder 里如何打开 iTerm2 并定位到当前目录?就不生效了
# 命令别名 Git
Oh My Zsh
提供了一套系统别名 (alias), 来达到相同的功能。比如 gst
作为 git status
的别名。而且 Git 插件是 Oh My Zsh
默认启用的,相当于你使用了 Oh My Zsh
, 你就拥有了一套高效率的别名,而且还是全球通用的。
下面是一些我常用的别名:
Alias | Command |
---|---|
gl | git pull |
gaa | git add --all |
gcmsg | git commit -m |
gcam | git commit -a -m |
gp | git push |
gco | git checkout |
gm | git merge |
gss | git status -s |
glol | git log --graph --pretty = format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit |
grh | git reset HEAD |
gba | git branch -a |
gcf | git config --list |
gcl | git clone --recursive |
gd | git diff |
ghh | git help |
自带大部分 git 命令的缩写,命令内容可以参考完整列表 (opens new window)或本地资源:~/.oh-my-zsh/plugins/git/git.plugin.zsh
# 单词跳转和单词删除
默认情况下,单词跳转 ( option + → or ←
) 和单词删除 ( option + delete
) 不起作用。要启用这些功能,需要手动开启下。
打开 iTerm2
, 按 Command + ,
键,打开 Preferences
配置界面,然后 Profiles → Keys → Load Preset... → Natural Text Editing
, 就可以了。
# iTerm2 快捷命令
命令 | 说明 |
---|---|
command + t | 新建标签 |
command + w | 关闭标签 |
command + 数字 / command + 左右方向键 | 切换标签 |
command + enter | 切换全屏 |
command + f | 查找 |
command + d | 垂直分屏 |
command + shift + d | 水平分屏 |
command + ; | 查看历史命令 |
command + shift + h | 查看剪贴板历史 |
ctrl + u | 清除当前行 |
ctrl + l / command + r | 清屏 |
ctrl + a | 到行首 |
ctrl + e | 到行尾 |
ctrl + f/b | 前进后退 (相当于左右方向键) |
ctrl + p | 上一条命令 |
ctrl + r | 搜索命令历史 |
ctrl + d | 删除当前光标的字符 |
ctrl + h | 删除光标之前的字符 |
ctrl + w | 删除光标之前的单词 |
ctrl + k | 删除到文本末尾 |
ctrl + t | 交换光标处文本 |
Command + / | 查看当前终端中光标的位置 |
# iTerm2 特殊技巧
# 选中即复制
iTerm2 有 2 种好用的选中即复制模式。
- 一种是用鼠标,在 iTerm2 中,选中某个路径或者某个词汇,那么,iTerm2 就自动复制了。
- 另一种是无鼠标模式,
command+f
, 弹出 iTerm2 的查找模式,输入要查找并复制的内容的前几个字母,确认找到的是自己的内容之后,输入tab
, 查找窗口将自动变化内容,并将其复制。如果输入的是shift+tab
, 则自动将查找内容的左边选中并复制。
# 智能选中和打开
双击选中,三击选中整行,四击智能选中
选取某一部分,按住 Shift
, 再点击某处,可以选取整个矩形内的文本 (类似 Windows 下按住 Shift
可以批量选取图标)
按住 ⌘ 键
- 可以拖拽选中的字符串;
- 点击
url
: 调用默认浏览器访问该网址; - 点击文件:调用默认程序打开文件;
- 如果文件名是
filename:42
, 且默认文本编辑器是MacVim
将会直接打开到这一行; - 点击文件夹:在
finder
中打开该文件夹; - 同时按住
opt
键,可以以矩形选中。
# 搜索历史命令
可以用 !!
来执行上一条命令,但最常用还是使用 ctrl+r
来搜索命令历史记录
# Tab 窗口面板管理
Tab 纵向分割:⌘+d
Tab 横向分割:⌘+shift+d
切换 Tab 中的 pane: ⌘ + [
或者 ⌘ + opt + arrow
关闭 panel: ⌘ + w
最大化 Tab 中的 pane, 隐藏本 Tab 中的其他 pane: ⌘ + shift +enter
, 再次还原
新建 Tab : ⌘ + t
Tab 切换:⌘ + arrow
或者 ⌘ + shift + [
改变 Tab 的顺序:⌘ + shift + arrow
快速切换到 Tab 上:⌘ + Num
最大化 Tab : ⌘ + enter
再次还原
窗口太多,可以使用 ⌘ + /
快速定位到光标所在位置
一屏显示所有窗口:⌘ + opt + e
# 标记跳转
类似编辑器的 mark 工具,iTerm2 也可以在命令行位置设置标记
设置标记:⌘ + shift + m
跳转到上个标记:⌘ + shift + j
# 目录浏览和跳转
输入 d
, 就显示在会话里访问的目录列表,输入列表前的序号,即可以跳转
进入目录可以省略前面的 cd
命令
输入 ..
可以返回到上级目录
# 在 Finder 里如何打开 iTerm2 并定位到当前目录?
# 方法一:Alfred
Alfred 有个很合适的插件符合需求,TerminalFinder (opens new window) .
fi
从 finder 开到 iTerm
if
从 iTerm 开到 finder
# 方法二:iTerm 自带的服务
安装 iTerm 后,会在系统设置的服务中自动生成两条服务,如下图一:
在文件夹 - 右键 - 服务中可以找到:
这样,只要点击这个服务就可以在 iTerm 中打开当前路径
为了避免每次都要右键选择服务,可以为这个服务设置一个快捷键。如上图一所示,我设置的快捷键是 Ctrl + Opt + i
, 这样只需要选中文件夹,再执行快捷键,就可以在 iTerm 中打开当前路径
注意事项:
这个服务必须选中文件夹或文件才能执行。选中文件夹会在 iTerm 中打开该文件夹的路径; 选中文件,会打开该文件所在的文件夹的路径
快捷键在重启系统或 Finder 后,需要手动激活才能生效。手动激活方法:
点击一下需要激活的服务即可
# 方法三:Go2Shell
Go2Shell.app 很好使,图标也萌萌哒。作为一个 Finder 常驻图标,>_<
这个就是。在你想进的目录里点击直接会启动终端并进入到当前目录。同时支持 Terminal, iTerm, xterm. 传送门:Mac App Store-Go2Shell (opens new window)
# 参考资料
- 在 Finder 里如何打开 iTerm2 并定位到当前目录?- 知乎 (opens new window)
- Mac 配置 Finder 当前目录打开 iTerm2 - 简书 (opens new window)
# 参考资料
- Mac OS 终端利器 iTerm2 (opens new window)
- 关于 iTerm2 你不知道的一些事 (opens new window)
- MAC 下使用 iTerm2 和 zsh (opens new window)
- macOS 上的终极 Shell (opens new window)
- zsh 全程指南 (opens new window)
- Shell(一): 功能、配置和插件 - 文章 - 伯乐在线 (opens new window)
- 012-mac 下 shell, zsh, oh-my-zsh, 以及插件 - bjlhx15 - 博客园 (opens new window)
- iTerm2 都不会用,还敢自称老司机?(上) - 掘金 (opens new window)