2011-07-20 17 views
14

Czy jest jakieś polecenie w Vim, które zrobi to samo, co o lub O (wstawi pustą linię przed/po bieżącą), ale które również nie przełącza się do wstawienia tryb?Polecenie Vima, aby wstawić pustą linię w trybie normalnym

+1

Można po prostu mapować do klucza do wyboru jak w tym artykule sugeruje: http://vim.wikia.com/wiki/Insert_newline_without_entering_insert_mode. Nie wiem, czy jest na to wbudowany klucz. – NorthGuard

+2

http://unix.stackexchange.com/questions/14746/vi-command-for-adding-blank-line –

+0

Hmm. Czy istnieje sposób na zamknięcie pytania jako dupę czegoś na innej stronie? –

Odpowiedz

14
:nnoremap <silent> [<space> :pu! _<cr>:']+1<cr> 
:nnoremap <silent> ]<space> :pu _<cr>:'[-1<cr> 

Objaśnienie:

  • :put będzie wkleić linewise rejestru poniżej. (:pu! powyżej)
  • :pu _ będzie wklej rejestru czarnej dziury, która jest pusta, więc otrzymujemy pustą linię
  • '[ i '] znaki są ustawione na początku i na końcu zmienił lub yanked tekstu.
  • :'[ będzie przesunąć kursor do linii startu ostatniej zmiany (The put w tym przypadku)
  • :'[-1 będzie przesunąć o jeden więcej linii

Jeśli wolisz wtyczki to proponuję '[ ale Tim Pope's unimpaired.vim. Który dostarcza te mapowania, ale również będzie się liczyć. Wtyczka ma również wiele innych przyjemnych mapowań.

+0

Zamierzałem wspomnieć również o nienaruszonym stanie. Wielkie konfiguracje mapowania. – darcyparker

-2

dd w pustym wierszu, p, aby go przywrócić, a następnie p, w którym chcesz pusty wiersz (y)

+5

Jeśli miałbyś być w pustym wierszu, dlaczego nie zamiast tego zamiast "yy". Wtedy nie trzeba go przywracać. – Brombomb

+0

To przesada. 'o ' a następnie trafiając '.' tyle razy, ile potrzebujemy, osiągniemy ten sam rezultat. – htatche

+0

Lub dodaj liczbę: 'o 5.' dla 6 pustych linii (w tym pierwszej dodanej przez' o'), na przykład. – Jangari

0

w trybie Insert:

:normal O 

spod Vima instrukcji inline:

Wykonaj polecenia w trybie normalnym {polecenia}. Umożliwia to wykonanie poleceń trybu normalnego wpisanych w wierszu poleceń. {commands} są wykonywane tak, jak zostały wpisane. W przypadku cofnięcia wszystkie polecenia są cofane razem: . Wykonanie zatrzymuje się po napotkaniu błędu. Jeśli podasz [!], Odwzorowania nie będą używane. {Polecenia} powinno być kompletnym poleceniem . Jeśli polecenie {commands} nie zakończy polecenia, ostatnie polecenie zostanie przerwane, jakby zostało wpisane lub zostało wpisane.

http://vimdoc.sourceforge.net/htmldoc/various.html#:normal

Dostałem wskazówkę tam: https://unix.stackexchange.com/a/16452/7914

+1

To wydaje się być przeciwieństwem pytania, o które pytano. –

0

można spróbować coś takiego:

:map <c-j> o<esc> 

ten brzmi: po naciśnięciu Control + j Będzie dodaj linię poniżej (i przejdź do trybu wstawiania), a następnie powróć do trybu normalnego, jeśli chcesz pozostać w tym samym wierszu gdzie przed wystarczy dodać k na końcu, coś takiego:

:map <c-j> o<esc>k 

Dodałem też Control + k aby dodać linię przed One I stoi na

:map <c-k> O<esc> 

i podobnie jak jeden, zanim będzie można dodać j w końcu zatrzymać się na tej samej linii:

:map <c-k> O<esc>j 

Jeśli potrzebujesz lub chcesz coś bardziej zaawansowany Można to sprawdzić posty: Quickly adding and deleting empty lines lub Insert newline without entering insert mode

Powiązane problemy