komenda vi do dodawania pustej linii?


24

W vi mogę użyć olub, Oaby dodać pustą linię i przejść do trybu wstawiania. Ale co jeśli chcę pozostać w trybie poleceń, czy istnieje na to polecenie?

W googlowaniu widzę sugestie dotyczące dodawania elementów do mojego vimrc, ale wydaje się, że powinien istnieć łatwiejszy sposób (to zawsze będzie działać).

Odpowiedzi:


25

Zgodnie z FAQ VIM możesz użyć :putpolecenia:

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

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

: put = ''
: put! = ''

Aby uzyskać więcej informacji, przeczytaj

: help: put

ale wtedy naprawdę łatwiej jest dodać:

map <Enter> o<ESC>
map <S-Enter> O<ESC>

do twojego .vimrc. W ten sposób możesz nacisnąć Enterlub Shift-Enterw normal modecelu wstawienia pustej linii poniżej lub powyżej bieżącej linii. Oczywiście zamienniki <Enter>i <S-Enter>preferowane klucze.


15

Jednym z uroków używania VIjest tryb poleceń do manipulowania tekstem i tryb edycji do dodawania tekstu. Dzięki temu nie musisz naciskać CTRL-cokolwiek, aby osiągnąć cel.

Inne sugestie mogą zadziałać - jeszcze ich nie wypróbowałem - ale wydają się wymagać sporo znaków lub VIzbytniej manipulacji środowiskiem.

Spróbuj użyć o[ESC]znaku a .po każdym nowym wierszu, który chcesz dodać, lub 5.dodać 5 wierszy. Jest to znacznie szybsze i zawsze będzie działać przy każdej instalacji VI.


1
Możesz użyć, .aby powtórzyć, ale możesz też zrobić <number>o<esc>, na przykład:5o<esc>
bollovan

1
To na pewno zadziała. Ale lubię widzieć, jak polecenie faktycznie wpłynie na dokument, zanim zrobię to wiele razy. Nie mogę powiedzieć, ile razy o'ddodawałem nowy akapit w VI, tylko po to, aby dowiedzieć się, że ten ładny akapit był w rzeczywistości sześcioma starannie łamanymi / zawijanymi słowami wierszami.
Glorytoad


1

Spowoduje to dodanie pustej linii po bieżącej linii:

:put _ 

Alternatywnie podaj linię na początku.


0

W Vimie 7.3: <number>o<esc>tworzy tylko jedną pustą linię.


Cóż, dodając <esc>ponownie przechodzisz z trybu wstawiania do trybu poleceń. Myślę, że szuka odpowiedzi, która w ogóle nie przejdzie do trybu wstawiania.
Bernhard

O! Zapomniałem wyjść z trybu wstawiania za pomocą <esc>. W takim przypadku będzie działać. Skopiuje nawet edytowany wiersz we wszystkich kolejnych wierszach.
Hakim


0

Aby wstawić pustą linię po bieżącej linii, pozostając w trybie poleceń, użyj:

: r !echo

Jest to polecenie „ read in a file”, ale zamiast nadania mu nazwy pliku, mówimy, aby przeczytał dane wyjściowe polecenia powłoki ( !); to polecenie powłoki echopo prostu wypisuje pusty wiersz. Po wstawieniu pustej linii pozostajesz w trybie poleceń.


-2

Dziwi mnie, że nikt inny nie wspomniał o tym:

Użyj „r”, a następnie „Enter key” w trybie wiersza poleceń.

Późno na imprezę o 7 lat :)


1
Tyle że wyjdzie to z trybu poleceń i zastąpi bieżący wiersz pustym.
Jeff Schaller

Nie jestem pewien, co mówi @Jeff. Moje spostrzeżenia dotyczące tego polecenia są następujące: (1) nie działa, jeśli aktualnie znajdujesz się w pustej linii, a (2) w przeciwnym razie usuwa znak pod kursorem.
Scott

Źle powiedziałem; rrzeczywiście zastępuje obecną postać. Nadal przenosi Cię do trybu poleceń.
Jeff Schaller

Zgoda. Jest to ograniczenie: należy to zrobić na niepustej linii + na pustym miejscu przed linią. Nie myślałem o tym. Dzięki.
Akhilesh Siddhanti
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.