2012-07-22 9 views
15

Podczas edycji kodu zawsze potrzebuję tej funkcji: utwórz nową linię po bieżącej linii, przesuń kursor do nowej linii (oszczędność bieżącego wcięcia!) I pozostań w trybie normalnym. Na przykład (zakładając █ jest kursor)Czy jest jakiś klucz domyślny w vim, aby utworzyć nową linię po bieżącej linii i pozostać w trybie normalnym?

function a() { 
    foon█tion() 
} 

Po typu polecenia, trzeba obrócić się w następujący sposób:

function a() { 
    foonction() 
    █ 
} 

można osiągnąć ten sam efekt, jeżeli, na przykład, naciśnij <Enter><Esc> będąc w trybie Insert z kursorem na końcu linii. Komenda o działa również podobnie, ale usuwa wcięcie po wyjściu z trybu wstawiania. Potrzebuję więc jednego naciśnięcia klawisza, aby wstawić jedną linię w dół.

inb4 nmap: Wiem, jak zamapować polecenie wykonania takiej rzeczy, ale zastanawiam się, czy istnieje standardowy sposób, aby to zrobić.

+2

FYI, 's' rozpocznie tryb INSERT * * na odpowiednim poziomie wcięcia. – romainl

Odpowiedz

22

Nie ma takiego klawisza, ale okazuje się, że możemy to zrobić - sans wcięcia - z czterech klawiszy: :pu_<Enter>

To vim faq pytanie, jeżeli odpowiedź jest użycie polecenia Ex :put:

12.15. Jak wstawić pustą linię powyżej/poniżej bieżącej linii bez wchodzenia w tryb wstawiania?

Możesz użyć polecenia ": put" ex, aby wstawić puste wiersze. Na przykład, spróbuj

:put ='' 
:put! ='' 

Aby uzyskać więcej informacji, przeczytaj: help: umieścić

:put umieszcza tekst z danego rejestru po aktualnej linii i pozostawia w trybie normalnym. :put! umieszcza tekst w linii powyżej bieżącej linii.

Powyższe przykłady wykorzystują rejestr expression=, aby wysłać pusty ciąg do polecenia put. Możemy to przyciąć za pomocą czarnej dziury vim rejestru, _: :put _.

Wreszcie, można to skrócić do: :pu_<Enter> i :pu!_<Enter>.

Zobacz także: :help registers.

Na koniec zwróć uwagę, że jest to również funkcja wtyczki Tim Pope'a o nazwie unimpaired.

Z nienagannej README:

Istnieje linewise odwzorowania. [<Space> i ]<Space> dodaj nowe linie przed i za linią kursora. [e i ]e wymieniają bieżącą linię z tą powyżej lub pod nią.

+0

Powyższe polecenia ': put' można skracać jako': pu_' i ': pu! _'. –

+0

@i dziękuję, dodałem do odpowiedzi – pb2q

+1

Istnieje bardzo podobne odwzorowanie (') ') wraz z wieloma innymi przydatnymi mapowaniami dostarczonymi przez wtyczkę Timpre's unimpaired.vim: http://www.vim.org/scripts/ script.php? script_id = 1590 –

Powiązane problemy