iTerm2 Version3 动手玩

经过 18 个月的等待,iTerm2 终于迎来了第三个主要版本!虽然现在还在最后的 Beta 测试,不过很多超强功能已经可以体验了。这篇文章就带大家大致浏览下新功能,以及非常强大的 Shell integration。


主要新特性

这一部分先概要介绍一下 3.0 中的主要改进(相当令人惊喜)

  • 全新的界面设计
    • 配合最新 OSX 的扁平设计风格,和系统的整体基调更搭,更好看
  • Shell Integration
    • 基本上可以认为是 login script 的超级强化版本,可以做很多超有意思的事情:命令提示符、命令执行完成的通知、拖拽上传和下载文件等等,这一部分会在后面详细介绍
  • 自动切换 profile
    • 比方说在 ssh 到远程机器上,或者进入 root 权限,或者进入某些特定的文件夹都可以自动切换 profile(至少可以变个配色)
  • Session 恢复
    • 简单来说就是不用 tmux 的 tmux
  • 内部显示图片
    • 可以使用 imgcat 脚本来在 iTerm2 中显示图片(甚至 GIF 都可以),这一部分会在后面详细介绍
  • Badges
    • 这是一个全新的功能!可以在当前的命令行的右上角显示一些相关信息(比如当前的主机名称或者 git 分支名称),这一部分后面会详细介绍
  • 密码管理器
    • 内置的密码管理器可以保存密码到 Mac OS 的 keychain 中,甚至可以在需要输入密码的时候自动打开密码管理器
  • 撤销关闭(回到过去)
    • 假如不小心关闭了一个窗口,command + z 就可以重新打开它(记得要在 5 秒之内按)
  • 标签栏现在可以放在左边,即使有很多 tab 也不怕了
  • 动态 Profiles,可以把 profiles 保存在 JSON 文件中
  • 不会再找不到光标了,可以高亮当前行或者让其他颜色变暗,总而言之就是显眼
  • 时间戳功能能够让我看到不同命令的执行时间以及错误在何时发生
  • 捕获输出,基本上来说,可以用这个功能实现部分 IDE 的便捷操作了

注:虽然我不用 Alfred,但是新版的 iTerm2 也提供了对应支持,具体请查看官网文档。

查看图片

非常简单,只要使用 imgcat imagename 就可以显示图片,例如:

不过使用之前还是需要配置一下:

  1. 下载两个对应插件 imgls imgcat
  2. 去掉后缀名,把文件拷贝到 /usr/local/bin 中,并修改权限 chmod 755 /usr/local/bin/imgls /usr/local/bin/imgcat

然后就可以使用啦,如上图所示。另外一种用法是 cat avatar.jpg | imgcat,也是同样的效果:

Badges

简单来说就是显示当前终端的信息,如下所示

具体的设置也很简单,如果要像我这样显示的话,在 Preferences>Profiles>General>Badge 输入 \(session.username)@\(session.hostname) 即可(这个依赖于 Shell Integration 功能)

更详细的文档可以查阅这里

Shell Integration

这个算是重头戏了,不过需要先安装一下(支持 tcsh, zsh, bash 和 fish)。我是直接在菜单栏里选择 iTerm2 > Install Shell Integration 进行安装的,实际上就是执行:

curl -L https://iterm2.com/misc/install_shell_integration.sh | bash

具体详细的文档在这里,本文只挑选一些当下对我很有用的功能

历史命令

有四种方式可以查看:

  1. Edit>Open Command History (快捷键 Shift-Cmd-;)
  2. 自动完成功能(快捷键 Cmd-;)
  3. Toolbet 中可以显示(这个后面介绍)
  4. 代码提示功能(View>开启 Command Completion)

历史命令查看

Toolbelt

在菜单栏中可以进行选择,然后就会出现在侧边栏,功能很多,很好用:

选择之后的效果大概是:

密码管理器

我们先设置一个 trigger,如下图所示:

然后在需要输入密码的时候,密码管理器会自动弹出:

选择对应的帐号密码然后点击 Enter Password,就可以免去输入密码的烦恼了。


还有很多功能没有摸索出来,网上的资料也比较少,以后有机会再慢慢补充吧。

捧个钱场?