在tmux命令模式下,以下命令创建新窗口并在其中打开Vim:
:new-window vim
当你退出Vim时,窗口也会关闭。有没有办法让它留下来?
uklbhaso1#
tmux有一个选项:remain-on-exit:
tmux
remain-on-exit
tmux set remain-on-exit on
yyyllmsg2#
我知道这是一个死了很久的问题。但我是tmux的最近用户,我有同样的问题。事实证明,你可能想这样做:
tmux new-session bash -l
这会给你一个bash窗口(登录shell)。然后,运行你想要的任何命令。当他们完成后,他们返回到命令提示符,就像你期望的那样。我想很多人都在寻找一种类似于屏幕的互动行为。这是一个简单的方法做到这一点。
i1icjdpr3#
我使用send-keys,以便它将命令“键入”到shell中。下面是我的get.all脚本,它启动了许多命令,其中一些我可能需要在它们完成后进行交互(而那些我没有的,有exit):
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
wmtdaxz34#
把@Jo So的好评论移到一个单独的答案。一旦第一个ls -la完成,此命令将下降到shell:tmux new-window "/bin/sh -c 'ls -la; exec bash'"
ls -la
tmux new-window "/bin/sh -c 'ls -la; exec bash'"
htrmnn0y5#
如果您打算在新窗口中正常退出进程(如正确退出),那么tmux new-window "vim ; exec bash"基本上是可以的。但是,如果您打算通过系统中断(例如SIGINT)退出新进程。你必须使用trap。tmux new-window "bash -c 'trap \"bash\" INT; tail -f foo'"
tmux new-window "vim ; exec bash"
trap
tmux new-window "bash -c 'trap \"bash\" INT; tail -f foo'"
sbdsn5lh6#
如果您只是想创建一个新窗口并在其中运行一个命令,这可能会更好
new-window \; send-keys 'vim' Enter ;\ last-window
6条答案
按热度按时间uklbhaso1#
tmux
有一个选项:remain-on-exit
:yyyllmsg2#
我知道这是一个死了很久的问题。但我是tmux的最近用户,我有同样的问题。事实证明,你可能想这样做:
这会给你一个bash窗口(登录shell)。然后,运行你想要的任何命令。当他们完成后,他们返回到命令提示符,就像你期望的那样。我想很多人都在寻找一种类似于屏幕的互动行为。这是一个简单的方法做到这一点。
i1icjdpr3#
我使用send-keys,以便它将命令“键入”到shell中。下面是我的
get.all
脚本,它启动了许多命令,其中一些我可能需要在它们完成后进行交互(而那些我没有的,有exit
):wmtdaxz34#
把@Jo So的好评论移到一个单独的答案。
一旦第一个
ls -la
完成,此命令将下降到shell:tmux new-window "/bin/sh -c 'ls -la; exec bash'"
htrmnn0y5#
如果您打算在新窗口中正常退出进程(如正确退出),那么
tmux new-window "vim ; exec bash"
基本上是可以的。但是,如果您打算通过系统中断(例如SIGINT)退出新进程。你必须使用
trap
。tmux new-window "bash -c 'trap \"bash\" INT; tail -f foo'"
sbdsn5lh6#
如果您只是想创建一个新窗口并在其中运行一个命令,这可能会更好