2015-06-15 43 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 
相關問題