Do radzenia sobie z podziałami używam wtyczki submode, która jest całkiem wygodna: pozwala ci stworzyć nowy tryb („tryb” jak w trybie normalnym, tryb wizualny, tryb wstawiania itp.), W którym definiujesz nowe powiązania klawiszy .
Dzięki temu nie musisz Ctrl+wjuż używać, a ponieważ jesteś w nowym trybie, wszystkie klucze mogą swobodnie wiązać: nigdy więcej problemów takich jak „Cholera, nie mogę znaleźć kombinacji klawiszy, która jako symbol i nie jest jeszcze zmapowana „
Możesz zainstalować wtyczkę za pomocą dowolnego zwykłego menedżera wtyczek, a oto niektóre z mojej konfiguracji, aby dać ci inspirację:
Utworzyłem nowy tryb, który wywołałem, WindowsMode
w którym manipuluję swoimi podziałami:
call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')
Te linie oznaczają, że wchodzę w tryb za pomocą Leaderki wychodzę z tego za pomocą Leader: Po naciśnięciu Leaderkwszystkich klawiszy, które uderzyłem:
- Nie rób nic, jeśli nie zdefiniowałem dla nich mapowania w tym trybie
- Zrób to, co postanowiłem zmapować w tym trybie (zobacz resztę odpowiedzi)
- Jeśli uderzę, wróć do normalnego trybu Leader
Gdy będę już w WindowsMode
tych liniach, hjklnawiguj między podziałami jakCtrl+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')
Użyłem tych linii do podzielenia okien za pomocą /i !:
" split windows with / and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')
I qzamknij podział:
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')
Przenieś podziały za pomocą 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-submode pozwala robić wiele potężnych rzeczy, więcej informacji można znaleźć w dokumencie .
EDYCJA W tym miejscu opisano inne podejście do podmoduła Window . Myślę, że metoda zastosowana przez autora jest jeszcze bliższa odpowiedzi na pytanie: tutaj jest używana do stworzenia nowego trybu, ale wszystkie <c-w>something
mapowania są dostępne z tymi samymi kluczami w submode:
" 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
W ten sposób wszystkie mapowania <c-w>lowerCaseKey
, <c-w>upperCaseKey
, <c-w><c-Key>
i mapowania <c-w>=_+-<>
są dostępne w trybie okienkowym bez prefiksu<c-w>
wincmd
na przykład można zmapować::nmap wj :wincmd j<cr>
działa tak samo jakCTRL-W j
(przejdź do okna poniżej).:help wincmd