打造一套得心应手的终端工具
字数 3.8k / 15 min 读完 / 阅读iTerm2 是 MAC 下最好的终端工具。可以简单的认为,iTerm2 是配置完毕开箱即用的 tmux。
安装 iTerm2
官网下载安装,这里不赘述。
iTerm 特色功能
特色快捷键
command+; 根据上下文呼出自动完成窗口,上下键选择
全屏 command+enter
光标去哪了?command+/ (很少用这个,还是感觉 Zsh 的补全更好用)
用鼠标选中某个路径或者某个词汇就自动复制
光标控制
快捷键 | 说明 |
---|---|
ctrl + a | 到行首 |
ctrl + e | 行末 |
ctrl + u | 删除一行 |
⌘ + r(ctrl + l) | 清屏,其实是滚到新的一屏,并没有清空。 |
ctrl + r | 搜索命令历史,这个大家都应该很熟悉了 |
ctrl + d | 删除当前字符 |
ctrl + h | 删除之前的字符 |
ctrl + w | 删除光标前的单词 |
ctrl + k | 删除到文本末尾 |
ctrl + t | 交换光标处文本 |
⌘ + —/+/0 | 调整字体大小 |
ctrl + f/b | 前进后退,相当于左右方向键,但是显然比移开手按方向键更快 |
ctrl + p | 上一条命令,相当于方向键上 |
窗口操作
- 新建窗口:shift + command + d(横向)command + d(竖向)
- 关闭窗口:shift + command + w
- 前一个窗口:command + `
- 后一个窗口:command + ~
- 进入窗口 1,2,3:option + command + 编号
标签页操作
- 新建标签页: Command + T
- 关闭标签页: Command + W
- 前一个标签页: Command + 左方向键,Shift + Command + [
- 后一个标签页: Command + 右方向键,Shitf + Command + ]
- 进入标签页 1,2,3…: Command + 标签页编号
- Expose 标签页: Option + Command + E(将标签页打撒到全屏,并可以全局搜索所有的标签页)
面板操作
- 垂直分割: Command + D
- 水平分割: Shift + Command + D
- 前一个面板: Command + [
- 后一个面板: Command + ]
- 切换到上/下/左/右面板: Option + Command + 上下左右方向键
其他功能
- 支持自定义全局快捷键用于显示和隐藏 iTerm2 Preference -> Keys -> Show/hide iTerm2 with a system-wide hotkey 打上勾之后
- 进入和退出全屏: Command + Enter
- 开启和关闭背景半透明: Command + u
- 文本选取
- 常见的点击并拖拽方式
- 双击选取整个单词
- 三击选取整行
- 选取某一部分,按住 Shift,再点击某处,可以选取整个矩形内的文本(类似 Windows 下按住 Shift 可以批量选取图标)
- 按住 Command + Option,可以用鼠标画出一个矩形,用类似截图的方式选取文本 另外,还可以使用鼠标完成以下操作: 按住 Command 然后点击某个 URL,会在浏览器中打开这个 URL,点击某个文件夹,会在 Finder 里打开这个文件夹(再也不用 open . 啦),点击某个文件名,会打开这个文件(文本文件支持 MacVim,TextMate 和 BBEdit,如果后面跟随一个冒号和行号,文件会在行号处打开,其它格式的文件似乎不能调用默认程序打开) 选取文本之后,按住 Command 同时拖动文本,可以将文本粘贴到目标位置(Drag and Drop) 鼠标中键粘贴(这个太感人了,一下子找回 Linux 的感觉了)
位置书签
在当前会话中按 Command + Shift + m 可以保存当前位置,之后可以按 Command + Shift + j 跳回这个位置。
粘贴历史
使用 Command + Shift + h 可以呼出粘贴历史,支持模糊检索。还可以设置将粘贴历史保存在磁盘上(Preferences -> General)
即时回放
使用 Command + Opt + b 打开即时回放,按 Esc 退出。即时回放可以记录终端输出的状态,让你“穿越时间”查看终端内容。默认每个会话最多储存 4MB 的内容,可以在设置中更改(Preferences -> Genernal -> Instant Replay)。
窗口状态
通过 Window -> Save Window Arrangement 可以保存当前窗口状态的快照,包括打开的窗口,标签页和面板。通过 Window -> Restore Window Arrangement 还原。还可以在 Preferences -> General -> Open saved window arrangement 中设置在启动 iTerm2 时自动恢复窗口状态
修改快捷键
在 iTerm2 下最不能接受的应该就是,不能使用 Command + Delete 键。在日常使用中特别影响效率,所以这里可以根据自己的使用习惯,加一些自定义快捷键,就能解决。
- 删除一整行:Action 选择 Send Hex Code: 输入: 0x15
- 删除一个字:Action 选择 Send Hex Code: 输入: 0x17
- 跳到行头:Action 选择 Send Hex Code: 输入: 0x01
- 跳到行尾:Action 选择 Send Hex Code: 输入: 0x05
- 跳到前一個字:Action 选择 Send Escape Sequence: 输入: f
- 跳到后一個字:Action 选择 Send Escape Sequence: 输入: b
让它变得好用
安装 homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 国内源
/bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
Homebrew 的使用
- 安装软件:brew install 软件名,例:brew install wget
- 搜索软件:brew search 软件名,例:brew search wget
- 卸载软件:brew uninstall 软件名,例:brew uninstall wget
- 更新所有软件:brew update
安装并切换成 zsh
Zsh 和 bash 一样,是一种 Unix shell,大多数 Linux 发行版都默认使用 bash shell。但 Zsh 有强大的自动补全参数和自定义配置功能等等。
chsh -s bin/zsh
如果哪天想切回 bash
chsh -s bin/bash
然后重新启动 iTerm2,zsh 就已经被配置成默认的 shell 了。
安装 oh-my-zsh
执行下面命令:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
开启插件
在~/.oh-my-zsh/plugins/
中已经自带了很多插件,只是没有激活而已,我们可以根据下面的插件激活方式进行激活。
插件介绍: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins
打开.zshrc 文件,修改plugins
# 命令行执行
open ~/.zshrc
# 根据自己需求,找到plugins配置项,修改成下面:
plugins=(git adb autojump branch colored-man-pages command-not-found common-aliases encode64 extract frontend-search git-flow history npm nvm npx osx react-native sudo vscode yarn zsh-interactive-cd)
# 命令行执行
source ~/.zshrc
这样自带的插件已开启了
安装其他插件
zsh-syntax-highlighting
高亮你的 zsh 可用命令
$ cd ~/.oh-my-zsh/custom/plugins # 打开插件的文件夹
$ git clone git://github.com/zsh-users/zsh-syntax-highlighting.git # 克隆插件项目
打开.zshrc 文件,插件到 plugin 中
plugins=( [plugins…] zsh-syntax-highlighting)
source ~/.zshrc #重新加载.zshrc的修改
autojump
autojump 就是通过记录你在 history 中的行为把你访问过的文件夹路径都 cache 下来
brew install autojump
打开.zshrc 文件,插件到 plugin 中
plugins=( [plugins…] autojump)
将下面命令加到.zshrc
最后
[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh
source ~/.zshrc #重新加载.zshrc的修改
使用 autojump 的缩写
j
,cd
命令进入~/user/github/Youthink
文件夹,
下一次再想进入Yourhink
文件夹的时候,直接j youthink
即可或者只输入一部分j youth
都行
删除无效路径
j --purge 无效路径
其他功能
命令历史记录
- 一旦在 shell 敲入正确命令并能执行后,shell 就会存储你所敲入命令的历史记录(存放在~/.zsh_history 文件中),方便再次运行之前的命令。可以按方向键 ↑ 和 ↓ 来查看之前执行过的命令
- 可以用 !! 来执行上一条命令
- 使用 ctrl-r 来搜索命令历史记录
命令和文件补全(按 tab 键)
命令别名
- 可以简化命令输入,在 .zshrc 中添加 alias shortcut=’this is the origin command’ 一行就相当于添加了别名
- 在命令行中输入 alias 可以查看所有的命令别名
一些比较好用的设置
alias cls='clear'
alias ll='ls -l'
alias la='ls -a'
alias grep="grep --color=auto"
alias -s html='vim' # 在命令行直接输入后缀为 html 的文件名,会在 Vim 中打开
alias -s rb='vim' # 在命令行直接输入 ruby 文件,会在 Vim 中打开
alias -s py='vim' # 在命令行直接输入 python 文件,会用 vim 中打开,以下类似
alias -s js='vim'
alias -s c='vim'
alias -s java='vim'
alias -s txt='vim'
alias -s gz='tar -xzvf' # 在命令行直接输入后缀为 gz 的文件名,会自动解压打开
alias -s tgz='tar -xzvf'
alias -s zip='unzip'
alias -s bz2='tar -xjvf'
Git 插件
在进入一个 git 文件夹后会切换显示的模式(不过需要配合字体才展示,下面会讲到):
常用命令
Alias | Command |
---|---|
gaa | git add –all |
gb | git branch |
gcam | git commit -a -m |
gcf | git config –list |
gl | git pull |
gp | git push |
gr | git remote |
gra | git remote add |
gst | git status |
自带大部分 git 命令的缩写,命令内容可以参考 ~/.oh-my-zsh/plugins/git/git.plugin.zsh
Oh My Zsh
提供了一套系统别名(alias),来达到相同的功能。比如 gst 作为 git status 的别名。而且 Git 插件是 Oh My Zsh 默认启用的,相当于你使用了 Oh My Zsh,你就拥有了一套高效率的别名,而且还是全球通用的。
完整列表请参考:https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git或者输入alias | grep git
命令
使用技巧
- 连按两次 Tab 会列出所有的补全列表并直接开始选择,补全项可以使用 ctrl+n/p/f/b 上下左右切换
- 更智能的历史命令。在用或者方向上键查找历史命令时,zsh 支持限制查找。比如,输入 ls,然后再按方向上键,则只会查找用过的 ls 命令。而此时使用则会仍然按之前的方式查找,忽略 ls
- 智能跳转,安装了 autojump 之后,zsh 会自动记录你访问过的目录,通过 j 目录名 可以直接进行目录跳转,而且目录名支持模糊匹配和自动补全,例如你访问过 hadoop-1.0.0 目录,输入 j hado 即可正确跳转。j –stat 可以看你的历史路径库。
- 目录浏览和跳转:输入 d,即可列出你在这个会话里访问的目录列表,输入列表前的序号,即可直接跳转。
- 在当前目录下输入 .. 或 … ,或直接输入当前目录名都可以跳转,你甚至不再需要输入 cd 命令了。在你知道路径的情况下,比如 /usr/local/bin 你可以输入 cd /u/l/b 然后按进行补全快速输入
- 通配符搜索:ls -l **/*.sh,可以递归显示当前目录下的 shell 文件,文件少时可以代替 find。使用 **/ 来递归搜索
- 在 .zshrc 中添加 setopt HIST_IGNORE_DUPS 可以消除重复记录,也可以利用
sort -t ";" -k 2 -u ~/.zsh_history | sort -o ~/.zsh_history
手动清除
让它变得好看
安装 Powerline
Powerline 是用 Python 写的脚本可以美化终端
1. 安装 Python 2.X
因为 Powerline 是用 Python 写的脚本,所以我们必须确保在安装 Powerline 我们的 Mac 里面已经安装了 Python(一般来说 Mac 会自带 Python 2.X)
$ python -V
Python 2.7.10
# 我们可以在终端里面输入下面的代码来检查 Python 版本,若此命令没有返回任何讯息说明你的 Mac 里面没有安装 Python。
2. 安装 pip
安装 Powerline 的方法有很多种,我们可以通过 pip 或者 git 等工具,我推荐使用 pip,
由于我还没有安装过
pip
, 所以先执行以下命令安装:
$ sudo easy_install pip
# 或者执行下面代码安装
$ wget https://bootstrap.pypa.io/get-pip.py -O - | python
3. 检查 Powerline
用 pip 安装 Powerline
$ pip show powerline-status # 检查是否已经安装Powerline
# 如果以上命令执行后,如果出现如下信息,则说明已安装,可跳过下一步。如果没有任何反应说明没有安装,则进行下一步。
Powerline 信息
--
Metadata-Version: 1.1
Name: powerline-status
Version: 2.2
Summary: The ultimate statusline/prompt utility.
Home-page: https://github.com/powerline/powerline
Author: Kim Silkebaekken
Author-email: kim.silkebaekken+vim@gmail.com
License: MIT
Location: /Users/mac/Library/Python/2.7/lib/python/site-packages #被安装到哪個路径
Requires:
# 以我的例子,我的使用者名称是 mac
# 所以會安装到 /Users/mac/Library/Python/2.7/lib/python/site-packages 目录底下
4. 安装 Powerline
(由于权限问题,无法安装到系统目录下,所以我加上了 –user 选项,选择安装到当前用户目录下)
$ pip install --user powerline-status
- 配置.bash_profile(如果是已经根据上面步骤,将 bash 切换成 zsh 的,跳过此处,配置.zshrc 就可以了)
创建、配置 .bash_profile
文件(mac 默认的配置文件,没有的话需要新建一个)让终端每次启动的时候自动运行 Powerline 脚本,新建如下:
cd ~ && l -h
# 输入上述命令,查看文件夹下是否有 .bash_profile 文件,没有的话执行下面命令, 如果有就跳过下一步,
touch .bash_profile # 创建 .bash_profile 文件
open .bash_profile # 打开文件
- 配置 .zshrc
open ~/.zshrc
只需将下面代码(其实就上面打印出来的安装路径)修改后,复制到你的 bash_profile
或者.zshrc
文件里就可以啦:
. /Users/[你的用户名]/Library/Python/2.7/lib/python/site-packages/powerline/bindings/bash/powerline.sh
需要注意的是最开始的 ‘.’ 和 ‘/powerline/…’ 中间是以空格分开的。
source ~/.zshrc # 保存后执行
这里也有可能出现“powerline/bindings/bash/../../../scripts/powerline-config:: No such file or directory”的报错。原因没有将 powerline 的相关命令添加到环境变量,可以使用软链接解决:
则需要将/Users/[用户名]/Library/Python/2.7/bin 加入到 PATH 中,如下:
export PATH=/Users/[你的用户名]/Library/Python/2.7/bin:$PATH
. /Users/[你的用户名]/Library/Python/2.7/lib/python/site-packages/powerline/bindings/bash/powerline.sh
source ~/.zshrc # 保存后执行
5. 更换主题
下载 agnoster 主题,同样在任何目录下,执行下列命令
$ cd ~
$ git clone https://github.com/fcamblor/oh-my-zsh-agnoster-fcamblor.git
$ open oh-my-zsh-agnoster-fcamblor/
打开文件夹,双击运行 install 文件,主题将安装到~/.oh-my-zsh/themes
目录下
open ~/.zshrc # 打开.zshrc
找到ZSH_THEME
字段,改成:ZSH_THEME="agnoster"
source ~/.zshrc # 保存后执行
6. 安装 Powerline 字体
通过 git clone 来下载 powerline 字体,在任意目录下,执行下列命令
$ cd ~
$ git clone https://github.com/Lokaltog/powerline-fonts.git
$ cd powerline-fonts/ && ./install.sh
安装完成后,提示所有字体均已下载到/Users/mac/Library/Fonts 路径下,如下提示:
All Powerline fonts installed to /Users/mac/Library/Fonts
这样就说明字体库安装完了。
接着打开 iTerm 2Preferences
=>Profile
=>Text
,找到Font
和Non-ASCII Font
的字体都设置成 带有Powerline
的字体,我这里设置的字体是12pt Meslo LG S DZ Regular for Powerline
,大家可以根据喜好选择,只要是 powerline 字体就可以。
7. 安装配色方案
下载配色方案,同样在任何目录下,执行下列命令
$ cd ~
$ git clone https://github.com/altercation/solarized.git
$ open solarized/iterm2-colors-solarized
然后进入/Users/mac/solarized/iterm2-colors-solarized 下双击 Solarized Dark.itermcolors
和 Solarized Light.itermcolors
两个文件就可以把配置文件导入到 iTerm2 里
把 iTerm 2 的设置里的Profile
=>colors
选项卡中里的Load Presets
设置为刚刚下载的配色方案就可以了。
大功告成,看看最后效果吧: