Je me demande si je peux insérer une nouvelle ligne sans quitter le mode normal. Par exemple, j'ai deux lignes:
this is line one
this is line two
Et le curseur est sur la première ligne. Maintenant, je veux une nouvelle ligne entre la ligne un et la ligne deux, comme ceci:
this is line one
this is line two
Je sais que lorsque je suis en mode normal, je peux simplement appuyer sur o
. Mais cela entrerait en mode d'insertion.
Comment puis-je insérer une nouvelle ligne comme et rester en mode normal?
normal-mode
Alex
la source
la source
Réponses:
J'utilise une cartographie pour cela:
De cette façon, vous pouvez insérer une ligne sous votre curseur avec
<Leader>o
et une sur la ligne précédente avec<Leader>O
.Remarque: on pourrait faire valoir qu'il nécessite autant de frappes que,
o<Esc>
mais j'espère que vous avez choisi votre leader pour rendre ce type de mappage facile. De plus, je ne suis vraiment pas sûr qu'il existe un moyen intégré de le faire.la source
Une solution qui ne passe pas en mode insertion, ne déplace pas le curseur et vous permet d'utiliser un compteur pour ajouter plusieurs lignes à la fois ( 3\oetc.):
la source
Si vous ne souhaitez pas ajouter de mappages, vous pouvez extraire
yy
une ligne vide, puis la collerp
pour le curseur inférieur etP
pour le curseur supérieur.la source
o
registre avec"oyy
et collez-le à partir de là chaque fois que nécessaire avec"op
.Je recommande personnellement d'utiliser le plugin Unimpaired de Tim Pope . Il offre de nombreuses applications , mais ceux que vous rechercher sont
[<space>
et]<space>
qui créent des lignes vides au- dessus et au- dessous de la ligne courante respectivement. Unimpaired fournit également de jolis mappages pour parcourir la liste des correctifs rapides, la liste des tampons, le basculement des options et bien d'autres. Voir:h unimpaired
pour en savoir plus.Si vous ne souhaitez pas utiliser un plugin intact, mais comme les mappages ci-dessous, voici quelques mappages rapides à mettre dans votre
~/.vimrc
fichier:la source
Ma cartographie utilise
Shift-Enter
. Il diffère des autres en ce que le curseur est renvoyé à la même ligne et colonne en utilisant la marque o.la source
<S-Enter>
ne fonctionne pas dans les émulateurs de terminaux (il ne fonctionne que dans gVim). Vous devrez donc choisir une combinaison de touches différente pour la mapper ;-)Cette réponse de Maxim Kim a changé la vie:
et mon riff dessus:
Mettez ces lignes dans votre
vimrc
. Ensuite , allez au début de la deuxième ligne de votre fichier et frappé Space, Enterou aller à la fin de la première ligne et a frappé Shift+Space, Enter. L'un ou l'autre ajoutera la ligne vide entre les première et deuxième lignes et vous laissera en mode normal.Vous pouvez également les utiliser pour n'importe quelle autre touche unique - appuyez sur Spaceou Shift+Spacesuivie de la touche que vous souhaitez et il l'insérera ou l'ajoutera, respectivement.
la source
Ces mappages feront exactement ce que vous recherchez.
Ceux-ci insèrent n nombre de sauts de ligne avant ou après le curseur; garder le curseur exactement là où il se trouve, sans changer la liste de sauts.
Une autre solution consiste simplement à créer un raccourci qui remplit le registre sans nom avec une nouvelle ligne. Ensuite, vous pouvez simplement utiliser les commandes put, p ou P pour insérer des retours à la ligne. Par exemple:
la source
Ma cartographie pour cela
Différent de statox car cela maintient le curseur au même endroit.
la source
<silent>
signifie?:h map-silent
.Ma solution personnelle insère un caractère de nouvelle ligne dans le registre d'expression et le colle après la ligne actuelle, puis revient à la position d'origine:
la source