2013-02-04 11 views
28

Vimの隣のタブを分割として現在のウィンドウに移動する簡単な方法はありますか?隣接するタブを分割して移動しますか?

周りを見ながら私は誰かがTソリューションを提供することなく、それは W操作はCtrl + の逆だと述べているメーリングリストの議論に達しました。

答えて

8

私は2つの解決策を提供しています。私は最初に自分自身をチェックしました。私はそれが動作することを保証できます。第二に、私はすぐに試しています。
最初の解決策:このプラグインhttp://www.vim.org/scripts/script.php?script_id=1961をインストールするには、単に~/.vim/pluginというフォルダを作成し、Tabmerge.vimというファイルをダウンロードするだけです。その後、次の2つのタブがあり、

:Tabmerge 

を入力するときは、水平方向に分割さとtopが整列、一つに2つのタブがマージされます。リンクを参照して、完全な使用方法のガイドを見つけてください。

または、このページhttp://vim.wikia.com/wiki/Move_current_window_between_tabsで、タブ間で現在のウィンドウを移動する2つの機能のコードを確認してください。ここでは(私はまだ試していない)機能:

function MoveToPrevTab() 
    "there is only one window 
    if tabpagenr('$') == 1 && winnr('$') == 1 
    return 
    endif 
    "preparing new window 
    let l:tab_nr = tabpagenr('$') 
    let l:cur_buf = bufnr('%') 
    if tabpagenr() != 1 
    close! 
    if l:tab_nr == tabpagenr('$') 
     tabprev 
    endif 
    sp 
    else 
    close! 
    exe "0tabnew" 
    endif 
    "opening current buffer in new window 
    exe "b".l:cur_buf 
endfunc 

function MoveToNextTab() 
    "there is only one window 
    if tabpagenr('$') == 1 && winnr('$') == 1 
    return 
    endif 
    "preparing new window 
    let l:tab_nr = tabpagenr('$') 
    let l:cur_buf = bufnr('%') 
    if tabpagenr() < tab_nr 
    close! 
    if l:tab_nr == tabpagenr('$') 
     tabnext 
    endif 
    sp 
    else 
    close! 
    tabnew 
    endif 
    "opening current buffer in new window 
    exe "b".l:cur_buf 
endfunc 
+0

おかげで行うことができる「分割にショーのバッファx」です。 – mhitza

+0

第2の選択肢は私の方が優れていました。 通常のモードでは 'mt'と' mT'にマップしました。なぜなら、タブを移動するために使用する 'gt'と' gT'と一貫しているからです。また、私はそのページに示されている垂直方向の分割方法を使用しました( 'sp'の代わりに' tople topleft split')。 –

30

あなたの問題の問題は、タブは、特定のバッファに縛られないことです。あるタブに10個のウィンドウを持つことができますので、「タブを分割に移動する」ことはあまり意味がありません。より理にかなって何

はtabmergeが私のニーズに十分だった、

:sb <name_of_buffer> 
+0

私はそれをアップヴォートしますが、バッファは私が使用するプラグインによって異なるタブで開かれるので、私の場合は意味があります。プラグインには分割して開くオプションはありません。 – mhitza

+0

これはどのプラグインですか? – romainl

+1

「MRU」では、現在のウィンドウまたは新しいタブ(分割キーなし)で開くことができます。 – mhitza