如何在Tmux中的另一个窗格中打开文件

时间:2015-06-15 17:16:53

标签: bash tmux terminator

我是tmux的新手,将一个窗口拆分为3个窗格,左半部分(主窗格),右上角和右下角。我是否可以使用命令在左侧主窗格中打开可编辑文件,例如vim myFile.py,myFile.py将在另一个窗格中打开,例如右上方窗格,这样我就可以随时编辑右上方窗格并保留输入命令到左侧主窗格?

3 个答案:

答案 0 :(得分:2)

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

现在开始使用它。首先,根据需要设置你的tmux窗格。在您希望成为专用编辑器的窗格中,以下命令将创建一个vim“server”。

vim --servername tmuxEditor

现在,从另一个窗格,您可以运行

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

,编辑器将打开指定的文件。其他有用的命令是

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

第一个在单独的选项卡中打开指定的文件,第二个将指定的键序列发送到服务器。

有关vim客户端服务器功能的详细信息,请参阅http://vimdoc.sourceforge.net/htmldoc/remote.html或在vim中运行:help remote

答案 1 :(得分:1)

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

一个选项是在右上方窗格中设置remain-on-exit选项,然后使用respawn-pane命令在窗格中启动vim

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

设置remain-on-exit选项
tmux set-option -t 0:0 remain-on-exit on

(这将为窗口中的任何窗格设置选项,而不仅仅是一个特定窗格。)

然后,使用

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 

答案 2 :(得分:0)

以下是在现有Vim实例(如果在tmux会话中运行)中打开文件的方法:

tmux send-keys -t vim:1.0 Escape ":tabnew path/to/your_file.txt" C-m

其中vim:1.0是窗格选择器(vim-会话名称,1-窗口索引,0-窗格索引)