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.


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>


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.


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, '')

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.


donc la commande pour mapper ceci à Alt-O serait: map <Mo> m`O <ESC> ``
K Robinson

C'est correct.
Matteo Riva

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.