Làm cách nào để thay đổi chiều rộng và chiều cao của phần chia hiện tại?


111

Tôi đang làm việc trên bộ đệm split (sử dụng ^ w + v, ^ w + s), nhưng đôi khi tôi muốn mở rộng phân tách hiện tại hoặc thay đổi chiều cao của nó. Làm thế nào tôi có thể đạt được điều đó?

Câu trả lời:


158

Có một số lệnh cửa sổ cho phép bạn làm điều này:

  • Ctrl+W +/-: tăng / giảm chiều cao (ví dụ 20<C-w>+)
  • Ctrl+W >/<: tăng / giảm chiều rộng (ví dụ 30<C-w><)
  • Ctrl+W _: đặt chiều cao (ví dụ 50<C-w>_)
  • Ctrl+W |: đặt chiều rộng (ví dụ 50<C-w>|)
  • Ctrl+W =: cân bằng chiều rộng và chiều cao của tất cả các cửa sổ

Xem thêm: :help CTRL-W


19
Cũng có thể đáng lưu ý rằng hai tùy chọn đầu tiên có thể mất một số lượng để thay đổi kích thước nhiều hơn một dòng / cột cùng một lúc.
Giàu

4
Cũng có thể đáng lưu ý rằng các tùy chọn thứ 3 và thứ 4 không thể đếm được để thay đổi kích thước theo chiều cao / chiều rộng tối đa.
Michael

2
Trên hệ thống của tôi, nó :help CTRL-Wvà không:help CTRL_W
Alexej Magura

trên windows, Cygwin, vim: khi bạn vimdiff -o bigfile1.bash bigfile2.bash:: ctrl-w =mở cửa sổ thứ 3 MiniBufExplorer trên cùng (và 3 cửa sổ hiện có kích thước bằng nhau) và đóng cửa sổ đó làm cho cửa sổ của tệp .bash đầu tiên lớn hơn 2 lần so với tệp .bash cửa sổ. Hoạt động tương tự với 2 tệp .vim cho kết quả tương tự. :( Tương tự vớivim -o
Olivier Dulac

Yêu cầu phím tắt cho hai tùy chọn đầu tiên vi.stackexchange.com/questions/16786/iêu
KcFnMi

43

Bạn cũng có thể sử dụng các resizelệnh:

  • :resize [+-]N - thay đổi kích thước phân chia ngang, tăng hoặc giảm chiều cao theo N ký tự.
  • :vertical resize [+-]N - thay đổi kích thước phân chia dọc, tăng hoặc giảm chiều cao theo N ký tự.
  • :resize N - thay đổi kích thước phân chia ngang, đặt chiều cao thành N ký tự.
  • :vertical resize N - thay đổi kích thước phân chia dọc, đặt chiều rộng thành N ký tự.

Đây là tương đương với các Ctrlwlệnh. Xem :help window-resize.



29

Đây là một trong vài lý do tôi thích sử dụng chế độ chuột của vim.

Nếu bạn sử dụng phiên bản GUI hoặc thiết bị đầu cuối của bạn hỗ trợ gửi các sự kiện kéo (chẳng hạn như xterm hoặc rxvt-unicode), bạn có thể nhấp vào dòng chia và kéo để thay đổi kích thước cửa sổ chính xác nơi bạn muốn, mà không cần nhiều công việc đoán bằng ctrl -w cộng, trừ, ít hơn, kết hợp lớn hơn.

Trong các phiên bản thiết bị đầu cuối, bạn phải đặt chế độ chuột đúng cách để hoạt động này

:set mouse=n

(Tôi sử dụng 'n', nhưng 'a' cũng hoạt động)

và bạn phải đặt loại chuột tty

:set ttymouse=xterm2

Rất nhiều người nói rằng rất nhiều thời gian bị lãng phí khi sử dụng chuột (chủ yếu là do thời gian cần thiết để di chuyển bàn tay của bạn từ bàn phím sang chuột và trở lại), nhưng tôi thấy rằng, trong trường hợp này, thời gian được tiết kiệm bởi có phản hồi ngay lập tức trong khi điều chỉnh kích thước cửa sổ và nhanh chóng thay đổi kích thước (tiếp tục di chuyển chuột thay vì gõ một chuỗi phím khác) vượt xa độ trễ của bàn tay moingmy.


4
Tôi không thể đồng ý nhiều hơn, tôi thấy trong Gnome-terminal :set mouse=nlà đủ, nhưng để kích hoạt khi cần bên trong tmux :set ttymouse=xterm2.
the_velour_fog

1
Hoàn toàn đúng, tôi thích bàn phím, nhưng loại này tốt hơn với chuột.
calbertts

Wow, cảm ơn vì đã chú ý đến điều này!
Charlie Gorichanaz

Hoàn toàn đồng ý với "nhưng tôi thấy rằng, trong trường hợp này, thời gian được tiết kiệm bằng cách có phản hồi ngay lập tức trong khi điều chỉnh kích thước cửa sổ và nhanh chóng thay đổi kích thước (tiếp tục di chuyển chuột thay vì gõ một chuỗi phím khác) vượt xa sự chậm trễ của bàn tay moingmy. " .
Nawaz

4

Có vẻ không ai nhắc đến z{nr}<CR>.

Nếu bạn :h ^w_, sau đó sẽ thấy z{nr}<CR>ngay bên dưới nó, có tác dụng tương tự như CTRL-W_.

Nếu bạn không cần z=kiểm tra chính tả, và thêm vào bên dưới .vimrc,

" vertical resize, z0<CR> minimize, z= equalize, z99<CR> maximize.
nnoremap z= <C-w>=

Sau đó, để thay đổi chiều cao cửa sổ:

  • z0<CR> để giảm thiểu chiều cao của cửa sổ hiện tại
  • z99<CR> để tối đa hóa chiều cao của cửa sổ hiện tại
  • z= để làm cho tất cả bằng nhau

2
việc sử dụng znày là một chút không trực quan. Tôi nghĩ chúng ta nên bám vào C-Wbản đồ. Thật tốt khi biết những gì ngoài đó mặc dù.
klaus

4

Thay đổi kích thước phân chia nhanh hơn http://vim.wikia.com/wiki/Resize_splits_more_quickly

Bạn có thể sử dụng :resizelệnh hoặc phím tắt của nó :resđể thay đổi chiều cao của cửa sổ. Để thay đổi chiều cao thành 60 hàng, sử dụng: :resize 60

Bạn cũng có thể thay đổi chiều cao theo gia số. Để thay đổi chiều cao theo gia số 5, hãy sử dụng: :res +5 :res -5

Bạn có thể sử dụng: thay đổi kích thước dọc để thay đổi độ rộng của cửa sổ hiện tại. Để thay đổi chiều rộng thành 80 cột, hãy sử dụng: :vertical resize 80

Bạn cũng có thể thay đổi chiều rộng theo gia số. Để thay đổi chiều rộng theo gia số 5, hãy sử dụng: :vertical resize +5 :vertical resize -5


Điều này rất khó xảy ra Resize splits more quickly, trừ khi các lệnh này bị ràng buộc với các phím bấm, đã được thực hiện ngoài hộp
klaus

Đừng hoàn toàn đồng ý với tuyên bố của Enan. Tôi thích câu trả lời này imho
craft

0

Vì một số lý do (có thể là một plugin), tiêu chuẩn C-w >(v.v.) không hoạt động trong tôi ~/.vimrc.

Những .vimrcbổ sung này hoạt động ( Ctrl-Shift-Left... trong đó Left | Right= phím mũi tên trái và phải, tương ứng.

" noremap <silent> <C-S-Left> :vertical resize +5<CR>
" noremap <silent> <C-S-Right> :vertical resize -5<CR>
noremap <silent> <C-S-Left> :vertical resize +1<CR>
noremap <silent> <C-S-Right> :vertical resize -1<CR>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.