我一直这样的需求:在 tmux 中新开个 window ,然后 cd 到某个目录下搞东搞西,不出意外地想再开个同目录下的 split pane 。
但是 tmux 默认是使用 session 的 working dir 来开 split pane 的,这就有些不方便了。
如果它有 vim :tcd
这样的机制多好啊。
或许有人会建议那你以想要的目录为 working dir 新开个 session 不截了。可以也还行,我现在就一直这么用,不过有时候 session 会特别多,而且每个 session 往往就一个 window + 两三个 pane ;切换起来也有点烦。所以我还是想要个类似 vim tabpage-variable 的机制。
然后我就爬文档( man tmux ),嘿,找到个章节 GLOBAL AND SESSION ENVIRONMENT
,借助 set-env -t session name value
、show-env -t session name
问题得以解决。
(读写某个 session env ; split pane 时读下这个值看本 window 有没有设置 working dir ,有的话加个 -c $workdir
的参数;...)
不知道有没有其他人有类似痛点,有没有更好的解决方式?
贴一下帮助文档,省得大家再查一遍
:h tabpage-variable
*tabpage-variable* *t:var* *t:*
A variable name that is preceded with "t:" is local to the current tab page,
It is deleted when the tab page is closed.
:h tcd
*:tc* *:tcd*
:tc[d][!] {path} Like |:cd|, but only set the directory for the current
tab. The current window will also use this directory.
The current directory is not changed for windows in
other tabs and for windows in the current tab that
have their own window-local directory.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.