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
- tab变色:iTerm2的上方tab颜色会随着状态而改变颜色。当该tab有新输出的时候,会变成洋红色;新的输出长时间没有查看,tab会变为红色
- 智能选取:双击选中,三击选中整行,四击智能选中(智能规则可配置),可以识别网址、引号引起的字符串,邮箱地址等
- 另外,iTerm2种选中的字符串都自动放入系统剪切板
-
Command快捷键(非常hack!)
- 按住⌘,可以拖拽选中的字符串
- 按住⌘,点击url或文件,可以直接打开网页(默认浏览器中)或者文件
- 按住⌘,点击文件夹:在finder中打开文件夹
- ⌘+option,可以矩形选中
- Meta键,emacs中高频键,可以在iTerm中配置,但是我没怎么用过,就不多说了
- tab快捷键
- 切换 tab:⌘+←, ⌘+→, ⌘+{, ⌘+}。⌘+数字直接定位到该 tab
- 新建 tab:⌘+t
- 顺序切换 pane:⌘+[, ⌘+];
- 按方向切换pane:⌘+Option+方向键
- 切分屏幕pane:⌘+d 水平切分,⌘+Shift+d 垂直切分
- 其他实用快捷键
- 智能查找,支持正则:⌘+f
- ⌘+Option+e全屏展示所有的 tab,可以搜索
- 一个标签页中开的窗口太多,有时候会找不到当前的鼠标,⌘+/找到它
- 【3.4+】Composer:⌘+⇧+.可以打开命令(shell)编辑textarea,可以在里面编辑好命令再按⇧+⏎发送command,这样就解决了很长命令在一行不便于查看编辑的窘境
- 结合分屏、记录layout、profile设置trigger、ssh登录,就可以一键登录多个远程终端了
- iTerm 还有一个功能就是把输入广播到所有终端,配合上面可以实现同时查看多台超算中的排队情况
- tmux映射到iTerm2(session,tab,panel),同样,由于没用过,就不多介绍了,之后研究完再介绍
- 自由配色(字体,图标,背景图),结合oh-my-zsh和powerlevel9k等,可以形成非常hacker的终端环境
- 【3.0+】新增功能:
- 右键查看command status
- download with scp
- imgcat,在iTerm2中cat图片文件(cool!)
- it2dl:下载文件到Downloads中,应该是远程中的操作
- 配置唤醒方式: 设置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
- 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,但是我没怎么用过
- 需要下载的:
- autojump:记录历史进入过的目录,智能识别short hand跳转,听上去是不是就很强大,缩写j使用。使用brew安装
brew install autojump
然后在~/.zshrc添加在plugins中就行
- rand-quote:随机生成一句名言,配合cowsay可以很hack的启动iTerm2
- autojump:记录历史进入过的目录,智能识别short hand跳转,听上去是不是就很强大,缩写j使用。使用brew安装
最后,所有插件在~/.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个推荐:
- artii:用brew安装,可以生成指定字符的ascii画,用法
artii 'hello'
- 挑选自己喜欢的ascii画,保存到本地某个位置,假设在
/Users/mac/ascii_pic.txt
,那么就在.zshrc中添加,配合lolcat使用(在下方给出了示例) -
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=)