Vim: insérer une ligne vide au-dessus de la ligne actuelle (pas ouverte, c'est-à-dire sans entrer en mode Insertion)

21

existe-t-il un moyen d'insérer une nouvelle ligne au-dessus du courant, sans ouvrir la ligne (donc sans entrer en mode Insertion)? Autrement dit, comme "O", mais sans ouverture.

tmadsen
la source
2
Que signifie «ouvrir une ligne»?
Matteo Riva
"ouvrir une ligne" signifie passer du mode normal au mode d'insertion, ce qui se produit lorsque vous appuyez sur "O" (oh).
tmadsen

Réponses:

9

J'utilise le plugin de Tim Pope sans équivalent qui a une commande spécifiquement à cet effet:

[<space>

Et si vous souhaitez ajouter un espace après la ligne sur laquelle vous êtes:

]<space>

Eric Mathison
la source
29

La définition de votre demande est O.

Logiquement, lors de l'insertion d'une nouvelle ligne ci-dessus serait O.

Pour insérer avant le curseur: i
Après: a
Avant la ligne (home): I
Ajouter à la fin de la ligne:A

Le plus proche je pense que vous viendrez est celui Iqui mettra le curseur au début de la ligne.

Josh K
la source
Peut-être que je n'étais pas clair. Le scénario est le suivant: je suis en mode normal et je veux insérer une ligne vierge au-dessus de celle sur laquelle je suis actuellement, tout en restant en mode normal. Appuyer sur "O" me met en mode insertion. Peut-être qu'il n'y a aucun moyen de le faire et c'est ok, juste pensé que je demanderais :)
tmadsen
3
Il suffit de cartographier,m`O+Esc`
Josh K
1
Bonne idée, n'y avait pas pensé. A fait: noremap <leader> O O <ESC>
tmadsen
2tmadsen: Vous pouvez mapper cette <yourkey> O <ESC>
Dzung Nguyen
9
:h append()

Il ne bougera pas le curseur, il vous permettra d'insérer autant de lignes (vides ou non) que vous le souhaitez, et il ne modifiera pas la marque de position précédente.

call append(line('.')-1, '')
Luc Hermitte
la source
oui, c'est +1 bien! / moi change son vimrc
akira
Eh bien, cela a eu quelques avantages en ce qui concerne les scripts. C'est un peu exagéré de taper autrement.
Luc Hermitte
+1 pour une solution qui fonctionne quelle que soit la configurationformatoptions
Micah Smith
5

Vous pouvez mapper la touche ou la séquence de touches que vous souhaitez

m`O<ESC>``

cela insère une ligne vierge au-dessus de la ligne actuelle vous gardant en mode normal et sans changer la position du curseur.

Matteo Riva
la source
donc la commande pour mapper ceci à Alt-O serait: map <Mo> m`O <ESC> ``
K Robinson
C'est correct.
Matteo Riva