2015-09-19 26 views
10

Hãy nói rằng tôi có bố trí này trong vim:vim: "mở rộng" cửa sổ vào sổ tiếp theo

+-----+-----+-----+ 
|  |  |  | 
| a |  |  | 
|  |  |  | 
+-----+ c | d | 
|  |  |  | 
| b |  |  | 
|  |  |  | 
+-----+-----+-----+ 

là nó có thể kết thúc với cách bố trí này:

+-----+-----+-----+ 
|  |  |  | 
| a | c |  | 
|  |  |  | 
+-----+-----+ d | 
|   |  | 
|  b  |  | 
|   |  | 
+-----+-----+-----+ 

giống như một "kéo dài đúng " chỉ huy ?

PS. Đừng bảo tôi sử dụng ctrl-w J trên b rồi ctrl-w L trên d, bố cục của tôi thực sự phức tạp hơn thế này. Tôi đang thực sự tìm kiếm một lệnh "mở rộng" nếu nó tồn tại.

+1

Vâng, tôi không nghĩ rằng một lệnh tích hợp cho điều này tồn tại. Bạn sẽ phải cobble nó cùng với ' J' và' wincent

Trả lời

0

Đây là giòn, nhưng có lẽ tốt hơn là không có gì!

function! ExtendRight() 
    let l:start=winnr() 
    exe "normal \<c-w>l" 
    let l:shrink=bufnr('%') 
    close 
    exe "normal " . l:start . "\<c-w>w" 
    exe "normal \<c-w>k" 
    vsplit 
    exe "b " . l:shrink 
endfunction 

Bạn có thể ánh xạ nó với nnoremap <c-w>e :call ExtendRight()<CR>.

0

Thật khó để thực hiện như một tính năng vì có thể có nhiều trường hợp cạnh cần xem xét, cũng là lý do tại sao vim không thực hiện điều này một cách nguyên bản.

Nếu bạn không thích các tùy chọn sử dụng ctrl-w J trên b sau đó ctrl-w L trên d sau đó cách tiếp cận đơn giản nhất sẽ được đóng chia c và sau đó mở một sự chia rẽ dọc mới trên một và mở bộ đệm/tập tin bên trong nó mà bạn mong muốn.

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