Vim: Di chuyển cửa sổ sang trái / phải?


215

Trong Vim, bạn có thể di chuyển một cửa sổ sang trái hay phải không? Ví dụ, tương tự <c-w> rhoặc <c-w> x, nhưng trái / phải thay vì lên / xuống?

Ví dụ: nếu tôi có bố cục này:

+---+---+---+
|   |   +---+
| A +---+---+
|   |   |   |
+---+---+---+

Tôi muốn biến nó thành thế này:

+---+---+---+
|   |   +---+
+---+ A +---+
|   |   |   |
+---+---+---+

Đó là khó khăn / khó chịu để làm với <c-w> {H,J,K,L}.

Câu trả lời:


424

Ctrl w cung cấp cho bạn "chế độ lệnh windows", cho phép các sửa đổi sau:

  • Ctrl w+ R- Để xoay cửa sổ lên / trái.

  • Ctrl w+ r- Để xoay cửa sổ xuống / phải.

Bạn cũng có thể sử dụng "chế độ lệnh windows" với các phím điều hướng để thay đổi vị trí của cửa sổ:

  • Ctrl w+ L- Di chuyển cửa sổ hiện tại sang "ngoài cùng bên phải"

  • Ctrl w+ H- Di chuyển cửa sổ hiện tại sang "ngoài cùng bên trái"

  • Ctrl w+ J- Di chuyển cửa sổ hiện tại xuống "rất dưới cùng"

  • Ctrl w+ K- Di chuyển cửa sổ hiện tại đến "rất cao"

Kiểm tra :help window-movingđể biết thêm thông tin


2
<c-w> rchỉ quay theo chiều dọc.
David Wolever

10
@David Wolever, bạn cần sử dụng các chữ cái in hoa trong trường hợp này, ví dụ như: Ctrl-W + Shift-L chẳng hạn. Tôi nghĩ rằng đây có thể là những gì bạn đang tìm kiếm.
Ricardo Valeriano

@David - chỉ cần thử nghiệm điều này và <cw> r hoạt động theo chiều ngang đối với tôi.
Ostler.c

3
@ lasler.c tạo phân chia dọc, sau đó tạo phân chia ngang trong một trong các cột. Bây giờ sử dụng <cw> r và nó chỉ quay vòng hai cửa sổ trong một lần phân chia dọc.
Chev 19/12/13

1
@ nn0p không, họ di chuyển cửa sổ xung quanh. <cw> h sẽ di chuyển con trỏ sang cửa sổ tiếp theo bên trái, trong khi <cw> H sẽ di chuyển cửa sổ hiện tại (cùng với con trỏ) sang bên trái.
MarSoft

58

Đây là một trong những hữu ích nhất cho tôi (và có lẽ là câu trả lời đúng cho câu hỏi):

  • Ctrl W+ xHOẶC Ctrl W+ Ctrl x- Xoay cửa sổ tập trung hiện tại với cửa sổ gần nhất bên phải.

rất hữu ích khi bạn ở giữa các ô và muốn trao đổi với bên phải. Cảm ơn vì điều này!
Daniel Andrei Mincă

8

Bạn có muốn tự di chuyển cửa sổ hay chỉ vị trí con trỏ của bạn?

Next để xoay hoặc đi xe đạp như bạn đã đề cập, nó chỉ có thể di chuyển cửa sổ chính nó để xa trên, dưới, trái hoặc phải, với lần lượt là:

^W K
^W J
^W H
^W L

Tôi không nghĩ có một cách dựng sẵn mặc định để di chuyển một cửa sổ sang bên phải.


1
Tôi muốn di chuyển các cửa sổ, không phải con trỏ.
David Wolever

1
Sau đó, đây là khoảng cách bạn có thể thực hiện với các lệnh của cửa sổ vim, nếu điều này hữu ích với bạn, vui lòng đánh dấu nó là giải pháp :-)
Bitterzoet

2
Tôi sẽ downvote bình luận của @Bitterzoet nếu tôi có thể. Xem câu trả lời ở trên
Nathan

1

Có vẻ như vim không thể làm điều này với các bản đồ chính tiêu chuẩn. Tài liệu nói rằng các lệnh ^ WK, J, H và L hoạt động bằng cách tạo phân tách và mở bộ đệm ở vị trí bây giờ, vì vậy tôi đã viết một hàm cho cùng: Ẩn bộ đệm, di chuyển sang trái, tách và sau đó mở bộ đệm ban đầu:

" Rotate a window horizontally to the left
function! RotateLeft()
    let l:curbuf = bufnr('%')
    hide
    wincmd h
    split
    exe 'buf' l:curbuf
endfunc

" Rotate a window horizontally to the right
function! RotateRight()
    let l:curbuf = bufnr('%')
    hide
    wincmd l
    split
    exe 'buf' l:curbuf
endfunc

-6
  • ctrl + h di chuyển con trỏ đến cửa sổ tiếp theo (phải)

  • ctrl + l di chuyển chữ thảo đến cửa sổ trước (bên trái)

về nhiều thông tin hơn, vui lòng tham khảo: :help window-moving


3
Không chính xác. Ctrl+h/lkhông phải là các ràng buộc tiêu chuẩn cho điều hướng cửa sổ (mặc dù tất nhiên chúng có thể được cấu hình và được cung cấp bởi một số plugin). Và điều này không trả lời câu hỏi ban đầu nào.
MarSoft
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.