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 的缩写 jcd 命令进入 ~/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命令

使用技巧

  1. 连按两次 Tab 会列出所有的补全列表并直接开始选择,补全项可以使用 ctrl+n/p/f/b 上下左右切换
  2. 更智能的历史命令。在用或者方向上键查找历史命令时,zsh 支持限制查找。比如,输入 ls,然后再按方向上键,则只会查找用过的 ls 命令。而此时使用则会仍然按之前的方式查找,忽略 ls
  3. 智能跳转,安装了 autojump 之后,zsh 会自动记录你访问过的目录,通过 j 目录名 可以直接进行目录跳转,而且目录名支持模糊匹配和自动补全,例如你访问过 hadoop-1.0.0 目录,输入 j hado 即可正确跳转。j –stat 可以看你的历史路径库。
  4. 目录浏览和跳转:输入 d,即可列出你在这个会话里访问的目录列表,输入列表前的序号,即可直接跳转。
  5. 在当前目录下输入 .. 或 … ,或直接输入当前目录名都可以跳转,你甚至不再需要输入 cd 命令了。在你知道路径的情况下,比如 /usr/local/bin 你可以输入 cd /u/l/b 然后按进行补全快速输入
  6. 通配符搜索:ls -l **/*.sh,可以递归显示当前目录下的 shell 文件,文件少时可以代替 find。使用 **/ 来递归搜索
  7. 在 .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,找到FontNon-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.itermcolorsSolarized Light.itermcolors 两个文件就可以把配置文件导入到 iTerm2 里

把 iTerm 2 的设置里的Profile=>colors选项卡中里的Load Presets设置为刚刚下载的配色方案就可以了。

大功告成,看看最后效果吧: