it-swarm.com.de

Fügen Sie eine neue Zeile ein, ohne in den Einfügemodus zu wechseln, vim

Ich möchte im normalen modus in vim mit newlines einfügen Shift-Enter und Ctrl-Enter. Ich probiere einige Lösungen und mische Lösungen aus Vim Wikia - Newline einfügen ohne in den Einfügemodus zu wechseln aber Shift-Enter und Ctrl-Enter hat nicht geantwortet:

" put a new line before or after to this line
nnoremap <S-CR> m`o<Esc>``
nnoremap <C-CR> m`O<Esc>``

" reverse J command
nnoremap <C-J> vaW<Esc>Bi<CR><Esc>k:s/\s\+$//<CR>$
59
helq

Meine Alternative ist die Verwendung von oo (bzw. OO), um eine neue Zeile unter (bzw. über) dem aktuellen Wert durch diese Zuordnung einzufügen: nmap oo o<Esc>k (bzw. nmap OO O<Esc>j)

53
TKrugg

Ziehe eine leere Zeile und füge sie bei gedrückter Umschalttaste ein:

Beginnend mit dem Cursor in der leeren Zeile:

yy + (shift + p)

"yy" zieht die Linie an und "shift + p" fügt sie darunter ein, ohne den Einfügemodus aufzurufen.

10
Rasmus Larsen

Aufgrund der Art und Weise, wie die Tastatureingabe intern erfolgt, ist dies heute leider nicht generell möglich. (Dieser spezielle Fall sollte jedoch in GVIM funktionieren.) Einige Tastenkombinationen, z Ctrl + non-alphabetic kann nicht zugeordnet werden, und Ctrl + letter gegen Ctrl + Shift + letter kann nicht unterschieden werden. (Es sei denn, Ihr Terminal sendet einen eigenen Termcap-Code , den die meisten nicht verwenden.) Geben Sie im Einfüge- oder Befehlszeilenmodus die Tastenkombination ein . Wenn nichts passiert/eingefügt wird, können Sie diese Tastenkombination nicht verwenden. Das gilt auch für <Tab>/<C-I>, <CR>/<C-M>/<Esc>/<C-[> etc. (Einzige Ausnahme ist <BS>/<C-H>.) Dies ist ein bekannter Schmerzpunkt und Gegenstand verschiedener Diskussionen über vim_dev und den #vim IRC channel.

Einige Leute (vor allem Paul LeoNerd Evans) möchten das beheben (auch für Console Vim in Terminals, die dies unterstützen) und haben verschiedene Vorschläge .

Bis heute sind noch keine Patches oder freiwilligen Helfer erschienen, obwohl viele den Wunsch geäußert haben, dies in einer zukünftigen Hauptversion von Vim 8 zu haben.

9
Ingo Karkat

Das benutze ich:

nmap <CR> :a<CR><CR>.<CR>

Ich habe es versucht nmap <CR> o<Esc>, aber es machte die Benutzeroberfläche unruhig, als in den Einfügemodus und zurück gewechselt wurde.

1
Erik B

Ich benutze: s/\ n/\ r\r/g (Ersetze die Zeilenumbrüche durch zwei Zeilenumbrüche, was gleichbedeutend mit "o" ist).

1
malcolm