我是新手,正在学习tmux。我将一个窗口分为3个面板,左半部分(主面板)、右上方四分之一和右下方四分之一。我想知道是否可以使用命令在左侧主面板打开可编辑文件,例如
vim myFile.py
,并在另一个面板中(例如上右面板)打开myFile.py文件,以便我始终可以在上右面板中编辑文件,并在左侧主面板中输入命令?vim myFile.py
,并在另一个面板中(例如上右面板)打开myFile.py文件,以便我始终可以在上右面板中编辑文件,并在左侧主面板中输入命令?+clientserver
选项,则有一种方法可以实现此目的。要检查,请在vim中运行:version
并查找+clientserver
。vim的客户端服务器功能依赖于X11,因此如果您没有看到它,请尝试安装gvim。有关X11依赖性的更多信息,请参见https://unix.stackexchange.com/a/23601。
现在我们来看如何使用它。首先,设置您想要的tmux窗格。在您希望成为专用编辑器的窗格中,以下命令将创建一个vim“服务器”。
vim --servername tmuxEditor
vim --servername tmuxEditor --remote files...
编辑器将打开指定的文件。其他有用的命令包括
vim --servername tmuxEditor --remote-tab files...
vim --servername tmuxEditor --remote-send keys
:help remote
了解有关vim客户端服务器功能的更多信息。vim
作为初始进程,而不是默认的 shell。 - chepner以下是如何在已经运行在tmux会话中的Vim实例中打开文件:
tmux send-keys -t vim:1.0 Escape ":tabnew path/to/your_file.txt" C-m
vim:1.0
是面板选择器 (vim
- 会话名称,1
- 窗口索引,0
- 面板索引)。
tmux select-window -t vim:1.0 \; select-pane -t vim:1.0
。如果你只有一个窗口,可以跳过 select-window
。 - LazyCat01tmux
在当前窗格之外打开命令,但 dpk2442 的解决方案使用 vim
的客户端/服务器功能可能更清晰一些。
tmux set-option -t 0:0 remain-on-exit on
这将为窗口中的任何一个面板设置选项,而不仅仅是一个特定的面板。
然后使用
tmux respawn-command -k -t 0:0.1 vim myFile.py
打开由-t
选项指定的面板中的vim
。 -
k`确保杀死面板中已经在运行的任何命令;如果您知道该面板当前没有正在运行的内容,可以省略它。
根据命令的长度,您可能需要定义一个shell函数来启动所需面板中的vim
:
start_vim () {
tmux respawn-command -k -t 0:0.1 vim "$1"
}
start_vim myFile.py
vim myFile.py
,但实际上将vim
打开在右上方的窗格中,使 shell 在左上方的窗格中继续运行? - chepner