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