Vim: inserire una riga vuota sopra la riga corrente (non aperta, ovvero senza entrare in modalità Inserisci)


21

c'è un modo per inserire una nuova linea sopra la corrente, senza aprire la linea (quindi senza entrare in modalità Inserisci)? Cioè, come "O", ma senza apertura.


2
Che cosa significa "apertura di una linea"?
Matteo Riva,

"Aprire una linea" significa passare dalla modalità normale per inserire la modalità, che è ciò che accade quando si preme "O" (oh).
tmadsen,

Risposte:


9

Uso il plugin di Tim Pope ineguagliabile che ha un comando specifico per questo scopo:

[<space>

E se vuoi aggiungere uno spazio dopo la linea in cui ti trovi:

]<space>


29

La definizione della tua richiesta è O.

Logicamente quando si inserisce una nuova riga sopra sarebbe O.

Per inserire prima del cursore: i
Dopo: a
Prima della riga (home): I
Aggiungi alla fine della riga:A

Il più vicino penso che verrai, Iche posizionerà il cursore all'inizio della riga.


Forse non ero chiaro. Lo scenario è questo: sono in modalità normale e voglio inserire una riga vuota sopra quella in cui mi trovo attualmente, rimanendo in modalità normale. Premendo "O" mi mette in modalità inserimento. Forse non c'è modo di farlo e va bene, ho pensato di chiedere :)
tmadsen

3
Basta mapparlo,m`O+Esc`
Josh K

1
Buona idea, non l'avevo considerato. Ha fatto: noremap <leader> O O <ESC>
tmadsen,

2tmadsen: puoi mappare questo <yourkey> O <ESC>
Dzung Nguyen il

9
:h append()

Non sposta il cursore, ti consente di inserire tutte le righe (vuote o meno) che desideri e non modifica il segno di posizione precedente.

call append(line('.')-1, '')

sì, questo è +1 pulito! / me cambia la sua vimrc
akira il

Bene, ha ottenuto alcuni vantaggi quando si tratta di script. È un po 'eccessivo digitare diversamente.
Luc Hermitte,

+1 per una soluzione che funziona indipendentemente da come è stata impostataformatoptions
Micah Smith,

5

Puoi mappare qualunque chiave o sequenza di tasti desideri

m`O<ESC>``

questo inserisce una linea vuota sopra quella corrente mantenendoti in modalità normale e senza cambiare la posizione del cursore.


quindi il comando per mappare questo su Alt-O sarebbe: map <Mo> m`O <ESC> ``
K Robinson

È corretto.
Matteo Riva,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.