2012-11-02 30 views
29

Tôi đã từng sử dụng ZoomWin: https://github.com/vim-scripts/ZoomWin để chuyển đổi giữa một và nhiều cửa sổ trong Vim. Nhưng plugin này có một vấn đề lớn. Khi tôi đang cố gắng khôi phục nhiều cửa sổ (chia dọc) có khoảng 2-4 giây chậm trễ.Cách nào tốt hơn để phóng to cửa sổ trong Vim hơn ZoomWin?

Bạn có biết cách tránh sự chậm trễ đó không? Hoặc có thể là giải pháp tốt hơn cho điều đó.

Version 25 vấn đề được giải quyết: https://github.com/regedarek/ZoomWin

+0

Độ trễ làm cho zoomwin trở thành hiện tượng vô ích đối với tôi. – arcseldon

+0

Câu trả lời của BenC bên dưới có sự hoàn hảo. cần thiết. – arcseldon

Trả lời

42

Tôi cố gắng sử dụng vim mà không cần bất kỳ plugin nào vì tôi không muốn dựa vào chúng khi tôi làm việc trên một hệ thống khác. Đến cùng một vấn đề này ngay bây giờ, tôi có thể đề xuất một số 'cách tốt hơn' (các cách thay thế) theo yêu cầu của OP:

  • c-w-| để có cửa sổ tiếp quản (nếu sử dụng vsplits). c-w-= để khôi phục. c-w-_ để chia tách ngang
  • đóng (các) cửa sổ khác, do đó tạo một chế độ toàn màn hình hiện tại. Split và tái mở cửa từ đệm để khôi phục
  • sử dụng tmux nếu có sẵn và chạy nhiều trường hợp của vim, c-b-z để chuyển đổi giữa độ toàn màn hình cho cửa sổ hiện tại

tôi đã liệt kê những theo thứ tự thực tiễn nhận thức của tôi. Kinh nghiệm tất nhiên sẽ tốt hơn với một plugin chuyên dụng, nhưng đó không phải lúc nào cũng là một lựa chọn.

12

Các ZoomWin phiên bản 24 giới thiệu tiết kiệm của các biến cửa sổ địa phương. Khi tôi đã thử nó ra, tôi thấy hiệu suất không thể chấp nhận, có lẽ vì các plugin khác nhau mà tôi đã cài đặt và cài đặt trình xử lý sự kiện khác nhau.

Tôi đã báo cáo vấn đề của tôi cho tác giả plugin và ông trả lời rằng

v25a của ZoomWin có g: zoomwin_localoptlist và các công cụ noautocmd.

Vì vậy, hoặc là cố gắng quay trở lại phiên bản 23 (mà tôi đã làm), hoặc dùng thử phiên bản mới nhất với các thiết lập đề cập tắt từ http://drchip.org/astronaut/vim/index.html#ZOOMWIN

+3

Cảm ơn bạn! Phiên bản 25 Hoạt động xuất sắc. Tôi vừa mới đẩy phiên bản mới nhất vào tài khoản Github của mình. https://github.com/regedarek/ZoomWin – tomekfranek

+0

Có, tôi đã thử với v25d, và, mặc dù không nhanh như v23, sự chậm trễ trên máy tính xách tay cũ của tôi là ~ 200 ms, mà tôi nghĩ rằng tôi có thể sống cùng. –

+0

Tác giả ban đầu không còn duy trì nó nữa? Bạn có sự cho phép của mình? –

28

Một simple alternative (có thể đủ tùy thuộc vào những gì bạn cần):

" Zoom/Restore window. 
function! s:ZoomToggle() abort 
    if exists('t:zoomed') && t:zoomed 
     execute t:zoom_winrestcmd 
     let t:zoomed = 0 
    else 
     let t:zoom_winrestcmd = winrestcmd() 
     resize 
     vertical resize 
     let t:zoomed = 1 
    endif 
endfunction 
command! ZoomToggle call s:ZoomToggle() 
nnoremap <silent> <C-A> :ZoomToggle<CR> 
+0

Điều này là khá tốt thực sự!Lưu ý rằng bạn có thể cần phải sửa lại '' thành một thứ khác nếu bạn đã sử dụng kết hợp này với tmux =) – Abdo

+1

@Abdo: thực vậy, tôi đã ánh xạ nó thành '' vì tôi sử dụng '' cho tmux ;-) – BenC

+0

Haha, đẹp quá! :-) Tôi ánh xạ nó vào ' E' vì tôi có 'cmd shift e' làm phím tắt để mở rộng cửa sổ trong OSX =) – Abdo

2

Một cách đơn giản khác là :tab split. Nhược điểm là nó không thay đổi cách bố trí của tab hiện tại. Nhược điểm là nó yêu cầu Vim 7.0 trở lên để hỗ trợ tab.

nnoremap <leader>t :call TabToggle()<cr> 
function! TabToggle() 
    if tabpagewinnr(tabpagenr(), '$') > 1 
    " Zoom in when this tab has more than one window 
    tab split 
    elseif tabpagenr('$') > 1 
    " Zoom out when this tab is not the last tab 
    if tabpagenr() < tabpagenr('$') 
     tabclose 
     tabprevious 
    else 
     tabclose 
    endif 
    endif 
endfunction 
Các vấn đề liên quan