深色模式
iTerm2 分屏继承目录
概述
在 iTerm2 里做左右分屏或上下分屏时,新 pane 默认未必会落在原来的工作目录里。结果通常是左边还在项目目录,右边已经回到 ~,刚敲两条命令就开始怀疑人生。
这个行为可以通过 Shell Integration 和 Working Directory 设置修正。配置好后,新 split pane 会直接继承当前 pane 的目录,日常开发会顺手很多。
先确认 Shell Integration
iTerm2 要知道当前 shell 在哪个目录,前提是先装好 Shell Integration。
安装方式:
- 菜单栏选择
iTerm2 > Install Shell Integration - 或在
Settings > Profiles > General > Command中确认自动加载相关选项
装好以后,iTerm2 才能感知目录切换、命令边界和退出状态。分屏继承目录这类能力,也建立在这个基础上。
如果想快速确认当前 pane 是否已经接入,可以执行:
sh
echo $ITERM_SESSION_ID有输出通常说明集成已经生效。
设置 split pane 继承当前目录
打开:
Settings > Profiles > General > Working Directory
如果当前版本提供了更细的高级配置,可以在这里把新 pane 的工作目录设为当前 session 的目录,常见表述类似:
Advanced ConfigurationNew panesSame as current session
设置完成后,再使用下面任一方式分屏:
Shell > Split Pane Vertically with Current ProfileShell > Split Pane Horizontally with Current ProfileCommand + DCommand + Shift + D
新开的 pane 就会继承原 pane 的 work dir。
为什么以前看起来像是不能继承
容易混淆的地方有两个。
第一,with Current Profile 里的 Current Profile 指的是当前使用的 profile 配置,不等于自动继承当前目录。
第二,如果没有 Shell Integration,iTerm2 只能知道该用哪个 profile,却不知道 shell 已经 cd 到哪里了。这个时候就算分屏行为正常,也只能落到 profile 的默认目录,或者用户主目录。
设置不生效时看什么
如果已经配过,但新 pane 还是没继承目录,通常先看这几项:
- 当前 shell 是否真的加载了
iTerm2的Shell Integration - 现在使用的 profile 是否就是刚修改的那个 profile
Working Directory里是否还有固定目录配置覆盖了当前 session- 分屏时是否使用了别的 profile,而不是当前 profile
很多时候问题不在 split pane,本质上是 iTerm2 没拿到当前目录信息。
适合一起开的相关配置
既然已经在调 iTerm2,这几个选项也值得顺手看一眼:
Profiles里给不同环境设置不同颜色,减少误操作- 打开
Scrollback Buffer,查日志更方便 - 配合
Window Arrangement保存固定布局
如果每天都要开项目目录、日志 pane 和临时命令 pane,目录继承配好以后,体验会稳定很多。
