Để xử lý các phân tách, tôi sử dụng plugin phụ , điều này thực sự khá tiện lợi: Nó cho phép bạn tạo một chế độ mới ("chế độ" như ở chế độ bình thường, chế độ trực quan, chế độ chèn, v.v.) trong đó bạn xác định các ràng buộc khóa mới .
Với điều đó, bạn không phải sử dụng Ctrl+wnữa và khi bạn ở chế độ mới, tất cả các phím đều được tự do ràng buộc: không còn vấn đề nào như "Chết tiệt, tôi không thể tìm thấy một tổ hợp phím nào như là một biểu thị và chưa được ánh xạ "
Bạn có thể cài đặt plugin với bất kỳ trình quản lý plugin thông thường nào và đây là một số cấu hình của tôi để cung cấp cho bạn một nguồn cảm hứng:
Tôi đã tạo một chế độ mới mà tôi đã gọi WindowsMode
trong đó tôi thao tác chia tách:
call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')
Những dòng này có nghĩa là tôi nhập trong chế độ với Leaderkvà tôi thoát khỏi chế độ với Leader: Sau khi tôi nhấn Leaderktất cả các phím tôi nhấn sẽ:
- Không làm gì nếu tôi không xác định ánh xạ cho chúng trong chế độ này
- Làm những gì tôi quyết định ánh xạ chúng trong chế độ này (xem phần còn lại của câu trả lời)
- Quay trở lại chế độ bình thường nếu tôi nhấn Leader
Khi tôi ở trong WindowsMode
các dòng này, hãy hjklđiều hướng qua các phần tách nhưCtrl+whjkl
" Change of windows with hjkl
call submode#map('WindowsMode', 'n', '', 'j', '<C-w>j')
call submode#map('WindowsMode', 'n', '', 'k', '<C-w>k')
call submode#map('WindowsMode', 'n', '', 'h', '<C-w>h')
call submode#map('WindowsMode', 'n', '', 'l', '<C-w>l')
Tôi đã sử dụng những dòng này để phân chia các cửa sổ với /và !:
" split windows with / and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')
Và qđóng một phân chia:
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')
Di chuyển các phần tách với Ctrlhjkl:
call submode#map('WindowsMode', 'n', '', '<C-j>', '<C-w>J')
call submode#map('WindowsMode', 'n', '', '<C-k>', '<C-w>K')
call submode#map('WindowsMode', 'n', '', '<C-h>', '<C-w>H')
call submode#map('WindowsMode', 'n', '', '<C-l>', '<C-w>L')
Vim-Subode cho phép thực hiện nhiều thứ mạnh mẽ, xem tài liệu để biết thêm chi tiết.
EDIT Một cách tiếp cận khác của mã con Window được mô tả ở đây . Tôi nghĩ rằng phương pháp được tác giả sử dụng thậm chí còn gần hơn để trả lời câu hỏi: Ở đây được sử dụng để tạo chế độ mới nhưng tất cả các <c-w>something
ánh xạ đều có sẵn với cùng các phím trong chế độ con:
" Go through every letter
for key in ['a','b','c','d','e','f','g','h','i','j','k','l','m',
\ 'n','o','p','q','r','s','t','u','v','w','x','y','z']
" maps lowercase, uppercase and <C-key>
call submode#map('window', 'n', '', key, '<C-w>' . key)
call submode#map('window', 'n', '', toupper(key), '<C-w>' . toupper(key))
call submode#map('window', 'n', '', '<C-' . key . '>', '<C-w>' . '<C-'.key . '>')
endfor
" Go through symbols. Sadly, '|', not supported in submode plugin.
for key in ['=','_','+','-','<','>']
call submode#map('window', 'n', '', key, '<C-w>' . key)
endfor
Bằng cách này, tất cả các ánh xạ <c-w>lowerCaseKey
, <c-w>upperCaseKey
, <c-w><c-Key>
và ánh xạ <c-w>=_+-<>
là tất cả các truy cập trong chế độ cửa sổ không có tiền tố<c-w>
wincmd
Ví dụ bạn có thể ánh xạ::nmap wj :wincmd j<cr>
nó hoạt động giống nhưCTRL-W j
(di chuyển đến cửa sổ bên dưới).:help wincmd