Vim: wstaw pusty wiersz powyżej bieżącego wiersza (nie otwarty, tzn. Bez wchodzenia w tryb wstawiania)

21

czy istnieje sposób wstawienia nowej linii powyżej prądu, bez otwierania linii (a więc bez wchodzenia w tryb wstawiania)? To znaczy jak „O”, ale bez otwierania.

tmadsen
źródło
2
Co oznacza „otwarcie linii”?
Matteo Riva
„otwarcie linii” oznacza przejście z trybu normalnego do trybu wstawiania, co dzieje się po naciśnięciu „O” (oh).
tmadsen

Odpowiedzi:

9

Używam wtyczki Tima Pope'a niezauważalnie, która ma polecenie przeznaczone specjalnie do tego celu:

[<space>

A jeśli chcesz dodać spację po linii, w której się znajdujesz:

]<space>

Eric Mathison
źródło
29

Definicja twojego żądania to O.

Logicznie przy wstawianiu nowej linii powyżej byłoby O.

Aby wstawić przed curser: i
Po: a
Przed linią (home): I
Dołącz na końcu linii:A

Najbliżej, jak sądzę, przyjdziesz, Iktóry umieści kursor na początku linii.

Josh K.
źródło
Może nie byłem jasny. Scenariusz jest następujący: Jestem w trybie normalnym i chcę wstawić pustą linię powyżej linii, w której aktualnie jestem, pozostając w trybie normalnym. Naciśnięcie „O” powoduje przejście do trybu wstawiania. Może nie ma sposobu, aby to zrobić i to jest w porządku, pomyślałem, że zapytam :)
tmadsen
3
Wystarczy zmapować,m`O+Esc`
Josh K
1
Dobry pomysł, nie wziąłem tego pod uwagę. Czy: noremap <lider> O O <ESC>
tmadsen
2tmadsen: Możesz zmapować ten <yourkey> O <ESC>
Dzung Nguyen
9
:h append()

Nie porusza kursorem, pozwala wstawić tyle wierszy (pustych lub nie), ile chcesz, i nie zmieni poprzedniego znaku pozycji.

call append(line('.')-1, '')
Luc Hermitte
źródło
tak, to +1 +1! / me zmienia jego vimrc
akira
Cóż, ma kilka zalet, jeśli chodzi o skrypty. Pisanie w inny sposób jest nieco przesadzone.
Luc Hermitte,
+1 za rozwiązanie, które działa niezależnie od tego, jak zostało ustawioneformatoptions
Micah Smith
5

Możesz zmapować dowolny klucz lub sekwencję klawiszy, którą chcesz

m`O<ESC>``

wstawia pustą linię powyżej bieżącej, utrzymując cię w trybie normalnym i bez zmiany pozycji kursora.

Matteo Riva
źródło
więc polecenie odwzorowania tego na Alt-O brzmiałoby: map <Mo> m`O <ESC> ``
K Robinson
To jest poprawne.
Matteo Riva