我多年来一直使用 screen 来确保任何远程工作在断开连接/崩溃后安全地保持打开状态。事实上,即使在本地工作,我也理所当然地使用屏幕。
最近,我的需求已经发展到我切换到 tmux 的阶段,因为它的美:
tmux attach -r
Run Code Online (Sandbox Code Playgroud)
以只读模式 (-r) 附加到我自己的会话意味着我不必担心意外:
当然问题是我必须打开一个会话, Cb + d 分离,然后用 -r 标志重新打开它以进入只读状态。然后,当我偶尔想加入 IRC 对话、中断任务或其他任何事情时,我必须再次断开连接并正常重新连接。
有谁知道一种通过键绑定在模式之间切换的方法?
我开始问这个问题,但在我打开它时回答了它。我将发布这个问题,跟进我的解决方案,并将其留给其他潜在的解决方案。
<
背景故事>
我是 tmux 和 vim 用户。我喜欢远程 vim 工作,因为我不必担心 Ubuntu 开发机器在 Flash 电影给我内核恐慌时卡住。运行 tmux 意味着在我重新启动后打开的文件正在等待我,我可以从我离开的地方继续。当我像这样连接时,在 tmux 会话中运行 vim 时遇到了问题:
ssh example.com -t 'tmux attach'
Run Code Online (Sandbox Code Playgroud)
UTF-8 问题突然出现,在正常脱壳时不会出现,只是手动附加到 tmux 会话。
<
/背景故事>
所以我想要一种在 ssh 登录时启动一些东西的可重用方法,这不会影响我在我的.zshrc
(或者你的,.bashrc
如果你仍然使用 bash)中配置的任何其他东西,这些东西可能是我的开发环境所需要的,这不会当我偶尔在这台机器上本地工作时出现。
我已经成为 vim 迷一年左右了,我已经记住了一些很棒的小技巧。我在 Ubuntu 的终端中进行了大量开发(在办公室)。
我最重视的一件事是让 tmux 来处理我的会话,这样如果 Gnome 或其他任何东西决定退出,那么我就不会丢失任何东西。
此外,我将 vim 客户端服务器(Cb :neww 'vim --servername d')作为我的 tmux 窗口之一运行,并使用它来接收我想要处理的任何文件,而我的其他 tmux 窗口正在执行各种工作。这意味着我可以打开一个 vim 而不会混淆我正在编辑的内容。
当我远程工作(通过 SSH)时,我连接到我的 tmux 会话并继续,但我有一个问题:vim 不会启动客户端-服务器实例。
我认为它与 X 相关,但我似乎无法通过 ssh 找到本地 tmux 和 tmux 之间的区别。