2011-03-30 95 views
31

我在想如何在新選項卡中打開vi(m)中的所有當前緩衝區。 我知道你可以編輯你的vimrc文件來做這樣的事情,但我更希望能夠在需要時運行一個命令。 我可以通過鏈接在新標籤和開放緩衝區的命令,比如做手工:Vim:在新選項卡中打開每個緩衝區

:tabnew | b 1 

但我寧願更自動化的方法。

回答

33

你可以指定一個映射到這個命令:

:bufdo tab split 
  • 解釋:
    • bufdo [命令]應用[命令]於所有緩衝區
    • 選項卡拆分起飛當前緩衝區並打開它的標籤

最後,映射這樣的:

map ,bt :bufdo tab split<CR> 

迎接

45

要走的路是:

:tab sball 

從幫助:

「sball:重新排列屏幕,在緩衝區列表中爲每個緩衝區打開一個窗口...當|:tab |時改性劑的新窗口在新標籤頁打開,超過「tabpagemax」「

沒有|:標籤|改性劑,它在拆分視圖中打開每個緩衝區

:sball 

或打開。他們中的大多數6

:6sball 

+0

不要忘了隱約體育冠冕堂皇的「垂直球」分裂關於y軸。 – 2015-09-27 18:57:30

+0

一些vim命令確實變得非常有趣:) – sehe 2015-09-27 18:58:58

+0

出於某種原因':tab sball'也將我當前的選項卡分成5個不同的水平分割。奇怪的...... – sixtyfootersdude 2016-02-02 21:55:51

6

[我會評論上述接受的答案,但沒有足夠的代表處點。]

對我來說,如果接受的答案是沒有語法突出顯示的新選項卡,如果它們是以前從未查看過的緩衝區。 (重現 - 選擇一些XML文件,選擇在Windows資源管理器中使用Single Vim進行編輯,然後從中嘗試。)我不知道爲什麼發生這種情況,所以我的解決方案只是再次打開語法高亮。

我也覺得最後一個緩衝區結束了兩個選項卡,所以我的解決方案是移動到最後一個選項卡並關閉它。

:bufdo tab split 
:tablast 
:tabclose 
:syntax on 

所以在映射,

:map ,bt :bufdo tab split<CR>:tablast<CR>:tabclose<CR>:syntax on<CR>