我是tmux的新手,我試圖弄清楚如何編輯配置,以便打開vim的窗口顯示在任務欄中,而不是作爲#:vim
,而是作爲任何名稱在vim中打開的文件是
(ie "#:filename.php")
。似乎它應該是一件普通的事情,但我的搜索 - 失敗。在vim中打開文件名稱的tmux選項卡
回答
以下是部分答案。它可以改進,但我現在沒有時間去完成它。
把你.vimrc
如下:
autocmd BufReadPost,FileReadPost,BufNewFile * call system("tmux rename-window " . expand("%"))
還有其他的事件(見Vim的:help autocmd-events
)可用於處理 爲好。我還沒有想到的一件事是,如果在兩個窗格中的每一個窗格中打開 的實例vim
,並且您從一個窗格 切換到另一個窗格,如何更改窗口名稱。 vim
不知道tmux
中的活動,因此不會觸發vim
事件。
我不得不調整這個使用expand()來獲取百分比符號擴展到窗口名稱,否則我只是得到「%」作爲我的窗口名稱。這是vim 7.3。 Ie:autocmd BufReadPost,FileReadPost,BufNewFile * call system(「tmux rename-window」。expand(「%」)) – Von 2013-04-19 18:51:42
我發現使用多個窗格或窗口時,或者需要將BufEnter添加到事件列表當在緩衝區之間移動時標題保持不變。 – Von 2013-05-02 13:06:48
expand(「%:t」)將放置文件名,而expand(「%」)顯示完整路徑。 – Nobu 2013-08-28 18:24:14
這是可能的!我想分享這個答案,因爲我一直在尋找它一段時間。終於有時間自己實施了。把你的.vimrc
如下:
autocmd BufEnter * let &titlestring = ' ' . expand("%:t")
set title
它將終端標題設置爲僅聚焦當前文檔標題(%t
代表文檔標題不帶路徑)。由於事件BufEnter
,每次將焦點切換到另一個文檔時,終端標題都會更改。當離開Vim時,它也會變回原來的狀態。將(或更換)在.tmux.conf
如下:
set-window-option -g window-status-current-format "[#I #W#T]"
set-window-option -g window-status-format "[#I #W#T]"
這是沒有必要精確地複製它,但它看起來像這樣:
[1 vim .tmux.conf][2 bash]...
的I
代表窗口號。 W
代表正在運行的當前應用程序,T
代表終端標題。後面我們用vim打開當前文件。終端標題總是被設置(我的bash終端始終顯示我不需要我的狀態欄的描述看到的主機名),所以,只顯示它時,Vim執行以下內容添加到您的.bashrc
:
PROMPT_COMMAND='echo -ne "\033]0;\007"'
對於bash,我使用的shell來說,這是正確的。 PROMPT_COMMAND在您的提示顯示在終端之前進行評估。 echo命令將終端標題設置爲空。每當您從可能更改標題的應用程序獲得提示時,都會發生此操作。其他外殼可能需要配置不同...
我不會使用tmux rename-window
,因爲它只要窗口存在就設置標題。您需要爲每個應用程序啓動調用它。所提出的方法保持動態,因爲它可以在窗口中使用多個窗格,並在vim中打開多個分割屏幕/文件。
我沒有任何運氣試過。任何調試技巧?我沒有重啓tmux。 – 2013-06-26 15:44:33
這是沒有足夠的信息繼續,但最好的猜測是你沒有使用bash作爲默認終端。通過在「.tmux.conf」中放置「set-option -g default-shell/bin/bash」,TMUX可以強制使用bash。也許你沒有看到可以通過添加「set-option -g status on」來解決的狀態欄。運氣好的話? – gospes 2013-07-01 08:19:09
'autocmd BufEnter * let&titlestring =''。展開(「%:t」)在tmux中似乎不適用於我。正如@Phluks建議的那樣,我在tmux內部使用'tmux rename-window'方法。 – studgeek 2016-04-09 05:04:15
感謝偉大的球員投入它節省了我很多打字:-)
的前兩個答案,我合爲一體,是我喜歡的。
autocmd BufEnter * call system("tmux rename-window " . expand("%:t"))
autocmd VimLeave * call system("tmux rename-window bash")
autocmd BufEnter * let &titlestring = ' ' . expand("%:t")
set title
第一條線和第二條線用於tmux,第三條和第四條線用於正常的終端使用。您不必重新啓動tmux,因爲它是顯式更新tmux的vim。
以前的兩個答案對我來說並不適用,只有這個答案。爲什麼? – fiatjaf 2017-03-01 16:39:51
這裏有很好的答案,但我仍然無法按照我想要的方式工作,即: 1)在打開vim時更改TMUX窗口名稱 2)退出。完成 當它返回到以前的名字,我有以下3的vimrc行實現它:
autocmd BufReadPost,FileReadPost,BufNewFile * call system("tmux rename-window " . expand("%:t"))
let tmuxtitle = system("tmux display-message -p '#W'")
autocmd VimLeave * call system("tmux rename-window " . shellescape(tmuxtitle))
工作正常,除了沒有文件名的緩衝區。任何想法如何解決這些? – PonyEars 2016-02-04 18:51:13
作爲替代其設置TMUX窗口名稱其他答案,你可以有VIM設置TMUX窗格標題來代替。這可讓您在使用vim更改窗格標題的同時保留使用tmux new-window -n <window-name>
定義的靜態窗口名稱。您可以在set-titles-string
中使用#T
來顯示窗格標題,例如set-option -g set-titles-string "#W: #T"
將顯示tmux窗口名稱和窗格標題。
實施例的vim配置改變窗格標題:
" Teach vim the tmux escape sequences for changing pane title
" Note the "^[" should be a literal escape code (use `^v<esc>` to enter it)
set t_ts=^[]2;
set t_fs=^[\\
" Turn on setting the title.
set title
" The following causes vim to refresh the title each time we change buffers.
" Otherwise it will only set the title once at startup.
augroup RefreshTitle
autocmd!
" The concatenation of the colon is a hack to prevent vim from
" interpreting the string as a modeline.
autocmd BufEnter * let &titlestring = "vim" . ":" . expand("%:t")
augroup END
榮譽給vim.wikia.com用於自動命令的t_ts
和t_fs
指導和phluks。
FWIW,對於我來說,只要「set title」和「set titlestring =%t」在切換緩衝區時保持窗格標題爲最新,並且我不需要augroup/BufEnter命令。 – 2017-01-02 18:56:51
,並恢復對Vim的自動退出窗口標題:
autocmd VimLeave * call system("tmux setw automatic-rename")
我也建議檢查是否我們在TMUX運行:
if exists('$TMUX')
autocmd BufEnter * call system("tmux rename-window '" . expand("%:t") . "'")
autocmd VimLeave * call system("tmux setw automatic-rename")
endif
- 1. 用VIM在新選項卡中打開幾個文件
- 2. 在Visual Studio打開文件選項卡中顯示文件夾名稱
- 3. OSX tmux配置會話自動在vim中打開文件
- 4. 使用vim在終端中用單獨的選項卡打開* .h文件
- 5. TMUX/Vim插件,顯示打開的文件
- 6. 在VIM中展開選項卡
- 7. 使用VIM在選項卡而不是窗口中打開文件
- 8. 缺少打開文件選項卡
- 9. VIM在現有或新選項卡中打開編譯錯誤
- 10. vim在現有選項卡中打開緩衝區
- 11. Vim:在新選項卡中打開每個緩衝區
- 12. iTerm2和tmux:在當前選項卡的工作目錄中打開新選項卡
- 13. 打開選項卡
- 14. 在新選項卡中打開文本文件
- 15. 在vim中,如何在新選項卡中打開文件或切換到包含它的選項卡(如果它已打開)?
- 16. 如何打開新選項卡時打開新選項卡
- 17. 在Xcode的特定選項卡中打開文件
- 18. 在gvim的新選項卡中打開文件
- 19. 在chm文件中打開索引選項卡的方法
- 20. 在Vim中打開文件打開vim diff?
- 21. 在新選項卡中打開鏈接,只有新選項卡
- 22. 在vim中的python文件中縮進的選項卡
- 23. VIM打開文件
- 24. vim命令跳轉到包含文件名的選項卡(tabpage)
- 25. 如何讓php在新選項卡中打開pdf文件?
- 26. 自動打開Rails工作流程的所有Vim選項卡
- 27. Vim的:打開不選項卡完成,是什麼?
- 28. 在新選項卡中打開延遲
- 29. 在新選項卡中打開Base64
- 30. 在新選項卡中打開網站
我用拆分了很多活力。如果我在緩衝區中打開10個文件並將4個文件分割爲4個窗口,那麼您告訴我,您想在tmux窗口標籤中顯示什麼內容? – Kent 2013-02-27 22:19:45
@Kent假設只有一個文件在單個窗口中打開。這可以做到嗎? – 2013-02-27 22:55:11
Kent:你可以在Vim中定義合適的自動命令,用活動緩衝區中文件的名稱調用'tmux rename-window'。 – chepner 2013-02-27 22:57:17