2013-05-17 13 views
7

Chcę zmienić rozmiar okna w vim, podobnie jak robię to w tmux.vim: czy mogę mieć ostatni klucz wiązania wieloprzyciskowego powtórzyć polecenie?

Z moich tmux wiązaniami (formy bind -r J resize-pane -D 5, gdzie -r jest dla Repeat) można zrobić <C-b>JJJ, która jest taka sama liczba kluczy i efekt jak vim „s 15<C-w>+, ale znacznie mniej myślenia, bo mogę po prostu przenieść podział, dopóki nie wygląda dobrze, zamiast decydować o liczbie rzędów/kolejek z góry.

Inny przykład: chcę mieć możliwość naciśnięcia klawisza <C-w>++++-- i wykonać tę samą akcję, co naciśnięcie klawisza <C-w>+<C-w>+<C-w>+<C-w>+<C-w>-<C-w>-. (Chociaż prawdopodobnie będę chciał ponownie go zmapować, aby wykonać 5 linii/kolców na ruch, zamiast 1).

Czy ten rodzaj trybu powtarzania/limitu czasu jest dostępny w połączeniach vim?

Odpowiedz

6

To podchwytliwe, ale będę dzielić mój sposób obsłużyć to, jak myślę, że jest to nawet łatwiejsze niż metody <C-w> (które używane przez dłuższy czas, a znaleźć uciążliwe):

" simplify resizing splits 
if has('unix') 
    nnoremap ^[j <C-w>- 
    nnoremap ^[k <C-w>+ 
    nnoremap ^[h <C-w>< 
    nnoremap ^[l <C-w>> 
else 
    nnoremap <M-j> <C-w>- 
    nnoremap <M-k> <C-w>+ 
    nnoremap <M-h> <C-w>< 
    nnoremap <M-l> <C-w>> 
endif 

The ^[ znaki muszą zostać zastąpione przez rzeczywiste ucieczki. Utwórz go w trybie wstawiania, naciskając Ctrl+v, a następnie escape. Wymagało to użycia meta+x w bash w systemie Linux. Teraz w obu systemach mogę po prostu przytrzymać klawisze Alt i hjkl, aby zmienić rozmiar podziałów, w tym przytrzymanie, powiedzmy, Alt+h, aby zmniejszyć poziom dzielenia, w którym się znajduję. Działają one również zliczeniami.

+0

To nie jest tak ogólne, jak "powtórzenia" tmux', ale wciąż jest idealnym rozwiązaniem dla tego przypadku użycia. Dzięki! –

0

Być może jest to po prostu trywialne, ale można mapować go:

nnoremap <f3> <C-w>- 
nnoremap <f4> <C-w>+ 
Powiązane problemy