2013-01-13 11 views
5

W trybie normalnym Vima można nacisnąć ctrl + e i ctrl + y aby przewinąć w dół iw górę, odpowiednio. Próbuję wykonać klucz-bind, który pozwala mi to zrobić również z trybu wstawiania. Oto, co mam:Jak przewijać w górę/w dół bez opuszczania trybu wstawiania?

" Scroll up and down while in insert mode. 
inoremap <C-e> <C-o><C-e> 
inoremap <C-y> <C-o><C-y> 

Działa to tak, jak się spodziewano, ale ma dużą wadę. To zostawia tryb wstawiania, przewija, a następnie ponownie wchodzi w tryb wstawiania. Jest to istotne, jeśli chodzi o cofanie, powtarzanie polecenia itp. I chciałbym móc przewijać w górę iw dół bez opuszczania trybu wstawiania. Myśli?

+0

Co przyzwyczaić do modelu vim dnia interakcja zamiast? – romainl

+0

@romainl: Oczywiście, ale nie widzę żadnego logicznego powodu, dla którego nie powinienem był w stanie przesunąć okna podglądu o kilka wierszy, aby uzyskać konkretną linię w trybie wstawiania. – Hubro

+0

Do kogo wysłano drugą odpowiedź: Dlaczego ją usunąłeś? :(To było bardzo pouczające, – Hubro

Odpowiedz

9

Można przyjrzeć :h i_CTRL-X_CTRL-E, który jest wbudowany w mapowaniu insert-mode do przewijania:

    *i_CTRL-X_CTRL-E* 
CTRL-X CTRL-E  scroll window one line up. 
     When doing completion look here: |complete_CTRL-E| 

        *i_CTRL-X_CTRL-Y* 
CTRL-X CTRL-Y  scroll window one line down. 
     When doing completion look here: |complete_CTRL-Y| 

Więc w twoim przypadku, to prawdopodobnie rade:

inoremap <C-e> <C-x><C-e> 
inoremap <C-y> <C-x><C-y> 
+0

+1 To jest bardzo fajne i rozwiązuje mój problem, ale nie całkiem odpowiada na pytanie. Jeśli wiesz, czy możesz dodać, czy istnieje wbudowana funkcja do przewijania w Vimie? – Hubro

+0

Można również przewijać w trybie wstawiania za pomocą przewijania myszy, przeciągając pasek przewijania lub korzystając z PageUp i PageDown, ale wszystkie one przesuwają kursor, więc prawdopodobnie nie jest to, co chcesz. W każdym razie prawdopodobnie więcej Vim-esque robi twoje przewijanie w normalnym trybie. –

+1

Wygląda na to, że nie ma żadnych wbudowanych funkcji do przewijania okna, więc obsługa skryptów/aliasing mnemotechników jest tak bliska, jak tylko się da. Nawet zapisane sesje i widoki nie zapamiętują dokładnej pozycji przewijania okna. Doszedłem do tego wniosku po przejściu przez funkcję vimscript (http://vimdoc.sourceforge.net/htmldoc/eval.html#functions) i opcje (http://vimdoc.sourceforge.net/htmldoc/options.html) referencje. – Daniel

2

undojoin rozwiązuje część cofania go:

ino <C-E> <Space><BS><ESC><C-E>:undojoin<CR>gi 

w <Space><BS> ów equence upewnia się, że istnieje blok do cofania, z którym można się połączyć.

Zaskakująco (dla mnie) to nie pomoże z pęknięcia ., więc to może zostawić cię tak samo irytujące miejscu jak jesteś teraz w ...

Powiązane problemy