2013-02-04 56 views
28

Có cách nào dễ dàng để di chuyển tab liền kề trong Vim sang cửa sổ hiện tại dưới dạng chia nhỏ không?Di chuyển tab liền kề để tách?

Trong khi nhìn xung quanh tôi đạt đến một cuộc thảo luận danh sách gửi thư mà ai đó nói đó là đảo ngược của hoạt động Ctrl +W, T mà không cung cấp các giải pháp.

Trả lời

8

Tôi đang cung cấp hai giải pháp, giải pháp đầu tiên tôi tự kiểm tra và tôi có thể đảm bảo nó hoạt động. Thứ hai, tôi đang cố gắng sớm.
Giải pháp đầu tiên: cài đặt plugin này http://www.vim.org/scripts/script.php?script_id=1961 bằng cách chỉ cần tạo thư mục ~/.vim/plugin và tải xuống tệp Tabmerge.vim vào thư mục. Sau đó, khi bạn có hai tab và bạn nhập

:Tabmerge 

bạn sẽ hợp nhất hai tab thành một, chia nhỏ theo chiều ngang và top căn chỉnh. Kiểm tra liên kết để tìm hướng dẫn sử dụng đầy đủ.

Hoặc, hãy xem trang này http://vim.wikia.com/wiki/Move_current_window_between_tabs để biết mã của hai hàm để di chuyển cửa sổ hiện tại giữa các tab. Đây là chức năng (mà tôi đã không cố gắng chưa):

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

Cảm ơn, tabmerge là đủ cho nhu cầu của tôi. – mhitza

+0

Giải pháp thay thế thứ hai tốt hơn cho tôi. Tôi đã ánh xạ chúng thành 'mt' và' mT' ở chế độ bình thường vì nó phù hợp với 'gt' và' gT' mà tôi sử dụng để điều hướng các tab. Ngoài ra, tôi đã sử dụng phương án tách theo chiều dọc được hiển thị trong trang đó ('vert topleft split' thay vì' của' sp'). –

30

Vấn đề với vấn đề của bạn là một tab không được gắn liền với một bộ đệm cụ thể. Bạn có thể có 10 cửa sổ với nhiều bộ đệm trong một tab để "di chuyển tab thành một phần tách" không có ý nghĩa nhiều.

gì ý nghĩa hơn là "show đệm x vào một sự chia rẽ" mà có thể được thực hiện với

:sb <name_of_buffer> 
+0

Tôi sẽ upvote nó nhưng nó có ý nghĩa cho trường hợp của tôi, bởi vì các bộ đệm được mở trong các tab khác nhau của các plugin tôi sử dụng. Các plugin không cung cấp tùy chọn để mở chúng trong chia tách. – mhitza

+0

Plugin nào? – romainl

+1

Vâng cho một 'MRU', nó cho phép tôi mở trong cửa sổ hiện tại hoặc tab mới (không có phím tách). – mhitza

Các vấn đề liên quan