2015-06-15 39 views
1

我是tmux的新手,并将窗口分成3个窗格,左半部分(主窗格),右上角和右下角。是否有可能我使用命令在左侧主窗格中打开一个可编辑文件,例如vim myFile.py,myFile.py将在另一个窗格(比如右上窗格)中打开,以便始终可以在右上方的窗格中编辑文件并保持输入命令INT左侧主窗格?如何在Tmux的另一个窗格中打开文件

+0

所以你要要在左上窗格中输入'vim myFile.py',但实际上在右上窗格中打开'vim',而使外壳在左上窗格中运行? – chepner

+0

是的,但它似乎不可能... –

回答

2

这是可以使用vim的功能,但它与tmux没有任何关系。如果你正在使用的vim的版本是用+clientserver选项编译的,那么有一种方法可以做到这一点。要检查,请在vim中运行:version,然后查找+clientserver。 vim的客户端服务器功能依赖于X11,所以如果你没有看到它,安装gvim可能会有所帮助。有关X11依赖关系的更多信息,请参阅https://unix.stackexchange.com/a/23601

现在来谈谈如何使用它。首先,无论你想要设置你的tmux窗格。在您想要成为专用编辑器的窗格中,以下命令将创建一个vim“服务器”。

vim --servername tmuxEditor 

现在从另外的窗格,您可以运行

vim --servername tmuxEditor --remote files... 

编辑器将打开指定文件(S)。其它有用的命令是

vim --servername tmuxEditor --remote-tab files... 
vim --servername tmuxEditor --remote-send keys 

第一打开在单独的标签指定的文件(S),并且所述第二发送指定的键序列到服务器。

请参阅http://vimdoc.sourceforge.net/htmldoc/remote.html或在vim中运行:help remote以获取有关vim客户端服务器功能的更多信息。

+0

非常好。我只是补充一点,无论用什么命令创建vim服务器运行的窗格,都可以启动'vim'作为初始进程,而不是默认的shell。 – chepner

0

TL; DR:您可以使用tmux在当前窗格以外的窗格中打开命令,但使用vim的客户端/服务器功能的dpk2442解决方案可能更干净。


一种选择是在右上角的窗格中设置remain-on-exit选项,然后使用respawn-pane命令在窗格中开始vim

说右上窗格的窗格标识符为0:0.1(会话0,窗口0,窗格1;您需要为您的设置调整此设置)。然后,您可以设置使用

tmux set-option -t 0:0 remain-on-exit on 

remain-on-exit选项(这将在窗口中的任何窗格中,不仅仅在某个特定窗格中的选项。)

,使用

tmux respawn-command -k -t 0:0.1 vim myFile.py 

打开vim在由-t选项的参数指定的窗格中。 - k`确保已经在窗格中运行的任何命令被终止;如果您知道该窗格中当前没有任何内容正在运行,则可以省略它。

发出命令的长度,你可能会想定义一个shell函数在所需的窗格中展开vim

start_vim() { 
    tmux respawn-command -k -t 0:0.1 vim "$1" 
} 

,所以你可以只运行

start_vim myFile.py 
相关问题