7

在 tmux 命令模式下,以下创建新窗口并在其中打开 vim:

:new-window vim

当你退出 vim 时,窗口也会关闭。有没有办法让它留下来?

4

5 回答 5

20

tmux有一个选项remain-on-exit

tmux set remain-on-exit on
于 2011-03-15T13:42:04.687 回答
4

我意识到这是一个长期死的问题。但我最近是 tmux 的用户,我也有同样的问题。事实证明,您可能想要这样做:

tmux new-session bash -l 

这会给你一个 bash 窗口(登录 shell)。然后,运行您想要的任何命令。完成后,它们会返回到命令提示符,就像您期望的那样。我认为很多人都在寻找一种类似“屏幕”的交互式行为。这是一种简单的方法。

于 2016-01-24T16:10:26.810 回答
1

我使用 send-keys 以便将命令“键入”到 shell 中。这是我的get.all脚本,它启动了许多命令,其中一些我可能需要在它们完成后与之交互(而我没有的那些,有exit):

#!/bin/sh
tmux att -t get ||
tmux \
  new -s get -n emacs \; \
  send-keys 'get.emacs' C-m \; \
  neww -n git \; \
  send-keys 'get.git' C-m \; \
  neww -n mini \; \
  send-keys 'get.mini' C-m \; \
  neww -n port \; \
  send-keys 'get.port' C-m \; \
  neww -n rakudo \; \
  send-keys 'get.rakudo' C-m \; \
  neww -n neil \; \
  send-keys 'get.neil && get.neil2 && exit' C-m \; \
  neww -n red \; \
  send-keys 'get.red && exit' C-m \; \
  neww -n cpan \; \
  send-keys 'get.cpan && exit' C-m \; \
  selectw -t emacs
于 2011-08-25T21:50:39.380 回答
1

将@Jo So 的良好评论移至单独的答案。

一旦第一个ls -la完成,此命令将下降到 shell: tmux new-window "/bin/sh -c 'ls -la; exec bash'"

于 2018-08-13T15:42:19.650 回答
0

如果您打算在新窗口中正常退出该过程(如正确退出),那么tmux new-window "vim ; exec bash"大多数情况下都可以。

但是,如果您打算通过系统中断(例如 SIGINT)退出新进程。您将不得不使用trap.

tmux new-window "bash -c 'trap \"bash\" INT; tail -f foo'"

于 2021-07-28T14:20:39.650 回答