iTerm2配置

如何愉悦地coding以及ZB

Posted by pfan8 on November 20, 2020

1. iTerm2 Intro

本来说写一个iTerm介绍,去网上看一下官方说法。结果一查发现原来有很多feature自己完全不知道,白用了那么久的iTerm[捂脸],所以用工具也要事先调研清楚啊,为什么要用以及有什么好用强大的功能都不知道,就显得水平low了

P.S. 因为iTerm项目已经停止了,所以下面谈及iTerm请默认是指iTerm2,事实上现在也基本没人会用iTerm

那么iTerm有什么功能,它和原生的terminal比到底有什么优点?请看知乎

高票回答贴了很多图,就不一一搬运了,文字总结一下(包括其他一些答案)

先总结一下:

  • iTerm之所以强大流行,很大程度是因为tmux:iTerm是唯一一款集成tmux的黑科技,全球仅此一家。与iTerm2的集成已经merge到tmux的master中了,所以只要tmux版本不是太低,都支持iTerm。
  • 当然,iTerm也有很多强大方便的feature,以及非常高的自由度,可以自由配置UI,唤醒方式,远程连接等等,下面给个list

iTerm powerful features

  1. tab变色:iTerm2的上方tab颜色会随着状态而改变颜色。当该tab有新输出的时候,会变成洋红色;新的输出长时间没有查看,tab会变为红色
  2. 智能选取:双击选中,三击选中整行,四击智能选中(智能规则可配置),可以识别网址、引号引起的字符串,邮箱地址等
    • 另外,iTerm2种选中的字符串都自动放入系统剪切板
  3. Command快捷键(非常hack!)
    • 按住⌘,可以拖拽选中的字符串
    • 按住⌘,点击url或文件,可以直接打开网页(默认浏览器中)或者文件
    • 按住⌘,点击文件夹:在finder中打开文件夹
    • ⌘+option,可以矩形选中
  4. Meta键,emacs中高频键,可以在iTerm中配置,但是我没怎么用过,就不多说了
  5. tab快捷键
    • 切换 tab:⌘+←, ⌘+→, ⌘+{, ⌘+}。⌘+数字直接定位到该 tab
    • 新建 tab:⌘+t
    • 顺序切换 pane:⌘+[, ⌘+];
    • 按方向切换pane:⌘+Option+方向键
    • 切分屏幕pane:⌘+d 水平切分,⌘+Shift+d 垂直切分
  6. 其他实用快捷键
    • 智能查找,支持正则:⌘+f
    • ⌘+Option+e全屏展示所有的 tab,可以搜索
    • 一个标签页中开的窗口太多,有时候会找不到当前的鼠标,⌘+/找到它
    • 【3.4+】Composer:⌘+⇧+.可以打开命令(shell)编辑textarea,可以在里面编辑好命令再按⇧+⏎发送command,这样就解决了很长命令在一行不便于查看编辑的窘境
  7. 结合分屏、记录layout、profile设置trigger、ssh登录,就可以一键登录多个远程终端了
  8. iTerm 还有一个功能就是把输入广播到所有终端,配合上面可以实现同时查看多台超算中的排队情况
  9. tmux映射到iTerm2(session,tab,panel),同样,由于没用过,就不多介绍了,之后研究完再介绍
  10. 自由配色(字体,图标,背景图),结合oh-my-zsh和powerlevel9k等,可以形成非常hacker的终端环境
  11. 【3.0+】新增功能:
    • 右键查看command status
    • download with scp
    • imgcat,在iTerm2中cat图片文件(cool!)
    • it2dl:下载文件到Downloads中,应该是远程中的操作
  12. 配置唤醒方式: 设置guake-like方式启动,guake-like的好处就是它总是从固定的位置弹出,点击其他窗口自动就隐藏了

2. iTerm2 配置

既然自由度高,光安装iTerm2肯定是不够的,为了达到舒适的coding环境,需要一些配置,下面介绍主流的配置,按照我个人喜欢的风格,如果你觉得不合适可以更改

2.1 安装oh-my-zsh

建议到官网查看安装教程,因为下面的指令可能会过期,只有官网是最新最正规的

$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

另外可以看到要下载github资源,所以注意国内下载github资源可能很慢,你可以选择配置github代理,实在不行就去找打包好的oh-my-zsh吧,然后执行install.sh安装

2.2 Oh-my-zsh插件

下载oh-my-zsh之后就可以玩耍zsh了,因为很多plugin要下载到oh-my-zsh里,然后在zsh里加载,首先有2个必备的plugin:

  • zsh-syntax-highlighting:高亮语法
  • zsh-autosuggestions:自动提示补全,在你输入前缀时自动半透明提示历史命令,并且按→键自动补全,非常实用

上面两个都需要自行下载,下面再推荐一些个人觉得好用的plugin

  1. omz自带的
    • git:各种git命令的short hand,公司项目用git管理的话就知道有多好用了
    • history-substring-search:查询历史指令,结合bindkey查询指定前缀的history
       bindkey '^P' history-substring-search-up
       bindkey '^N' history-substring-search-down
      
    • colored-man-pages: 彩色版man
    • cp:提供一个 cpv 命令,这个命令使用 rsync 实现带进度条的复制功能
    • extract:x一键解压
    • tmux: 链接tmux,但是我没怎么用过
  2. 需要下载的:
    • autojump:记录历史进入过的目录,智能识别short hand跳转,听上去是不是就很强大,缩写j使用。使用brew安装
      brew install autojump
      

      然后在~/.zshrc添加在plugins中就行

    • rand-quote:随机生成一句名言,配合cowsay可以很hack的启动iTerm2

最后,所有插件在~/.zsh中使用在一行中加入

plugins=(plugin1 plugin2 plugin3 ...)

重启iTerm2,开始快乐之旅吧=w=

2.3 安装powerlevel9k(可跳过直接安装10k)

搞定插件之后就是字体,有一些非ascii的icon,需要下载额外字体,以及powerlevel9k的ZSH主题

按照官方安装文档步骤,如果有OMZ的话,使用下面的指令

$ git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

然后再.zshrc中配置

ZSH_THEME="powerlevel9k/powerlevel9k"

然后你需要安装字体,否则那么icon将会是乱码问号?官方提供了几种选项:

  • powerline font
  • programmer font
  • awesome-powerline font
  • nerd font

个人喜欢MesloLGLDZ Nerd Font,配合ascii画,效果较好,下图是我的iTerm2启动

当然我还有一些额外的配置,下面会继续介绍

P.S. 在.zshrc中需要配置一些powerlevel9k的选项,但是因为和10K的重复,下面只会给出10K的配置

2.4 安装powerlevel10K

看名字就知道是powerlevel9K的升级版,10K版本增加了更多的个性化icon和配置,下载仍然按照官网教程即可

官方还友情提示了对国内用户,因为有科学上网的问题,可以使用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"

如果下载过nerd字体,是支持10K的,别的字体似乎不行

另外,首次启动iTerm2的话,会有10K的配置教程,可以逐步选择自己喜欢的样式,给出我当前的配置

POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0C3 ' 
POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0C2'
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_writable vcs virtualenv status background_jobs command_execution_time nvm ) 
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(root_indicator history time) 
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0C0 '

POWERLEVEL9K_SHORTEN_DELIMITER=..
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=$'\n'
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="\uF460%F{073}\uF460%F{109}\uF460%f "
POWERLEVEL9K_MODE='nerdfont-complete'
export UPDATE_ZSH_DAYS=13
HIST_STAMPS="yyyy/mm/dd"

#左右栏图标显示
# Separator between different-color segments on the left.
typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0C0'
# Separator between different-color segments on the right.
typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0C2'
# The right end of left prompt.
typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0C0'
# The left end of right prompt.
typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0C2' 
#⻓路径折叠
# Don't shorten this many last directory segments. They are anchors. 
typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
#命令成功提示符
typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION=' ✔' 
typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION=' ✔'

因为我是从9K升级上来的,所以沿用9K配置,详细配置看9K文档

实际上通常情况10K配置用教程就好,体验很好

p10k configure

在iTerm2中输入上面指令即可进入配置flow

2.5 更多个性化配置

首先,透明在iTerm2 -> Preferences -> Profiles -> Windows里调节Transparency,调节到自己喜欢的程度就好,觉得比较花可以不设置

然后启动的ascii画,有3个推荐:

  1. artii:用brew安装,可以生成指定字符的ascii画,用法artii 'hello'
  2. 挑选自己喜欢的ascii画,保存到本地某个位置,假设在/Users/mac/ascii_pic.txt,那么就在.zshrc中添加,配合lolcat使用(在下方给出了示例)
  3. random-quote或者fortune,结合cowsay也很hacker,把fortune | cowsay或者quote | cowsay加入zshrc最后一行,会随机生成一句话,效果如下

最后配合lolcat形成彩虹效果

   lolcat /Users/mac/projects/yideng/iterm_ascii.txt

lolcat需要自行安装,另外,lolcat需要在zshrc最上方,否则不work,原因未知

效果如下(背景就是blog =w=)