commande vi pour ajouter une ligne vierge?

24

Dans vi, je peux utiliser oou Opour ajouter une ligne vierge et passer en mode d'insertion. Mais que faire si je veux rester en mode commande, y a-t-il une commande pour cela?

Dans googler, je vois des suggestions pour ajouter des trucs à mon vimrc, mais il semble qu'il devrait y avoir un moyen plus simple (qui fonctionnera toujours.)

Eric Wilson
la source

Réponses:

25

Selon la FAQ VIM, vous pouvez utiliser la :putcommande:

12h15. Comment insérer une ligne vierge au-dessus / en dessous de la ligne actuelle sans entrer en mode d'insertion?

Vous pouvez utiliser la commande ex ": put" pour insérer des lignes vides. Par exemple, essayez

: put = ''
: put! = ''

Pour plus d'informations, lisez

: aide: mettre

mais alors vraiment il est plus facile d'ajouter:

map <Enter> o<ESC>
map <S-Enter> O<ESC>

à votre .vimrc. De cette façon , vous pouvez appuyer sur Enterou Shift-Enteren normal modeinsérer une ligne vide en dessous ou au- dessus ligne courante. Bien sûr, remplacez <Enter>et <S-Enter>avec vos clés préférées.

M. Shunz
la source
15

Une partie de l'attrait de l'utilisation VIest d'avoir un mode de commande pour manipuler le texte et un mode d'édition pour ajouter du texte. Cela vous évite d'avoir à appuyer sur CTRL-quoi que ce soit pour accomplir des choses.

Les autres suggestions peuvent fonctionner - je ne les ai pas essayées - mais elles semblent nécessiter pas mal de caractères ou VItrop manipuler votre environnement.

Essayez d'utiliser o[ESC]suivi de a .pour chaque nouvelle ligne que vous souhaitez ajouter ou 5.pour ajouter 5 lignes. Ceci est beaucoup plus rapide et fonctionnera toujours sur n'importe quelle installation de VI.

Glorytoad
la source
1
Vous pouvez utiliser .pour répéter, mais vous pouvez également faire <number>o<esc>, par exemple:5o<esc>
bollovan
1
Cela fonctionnerait certainement. Mais j'aime voir comment la commande aura un impact sur le document avant de le faire répéter plusieurs fois. Je ne peux pas vous dire combien de fois j'ai o'dajouté un nouveau paragraphe dans VI, seulement pour découvrir que le joli paragraphe était en fait six lignes soigneusement coupées / encapsulées.
Glorytoad
2

Dans vim, il y a aussi :normal oou :normal O.

Steven Pritchard
la source
1

Cela ajoutera une ligne vierge après la ligne actuelle:

:put _ 

Sinon, spécifiez une ligne au début.

justerman
la source
0

Sur Vim 7.3: <number>o<esc>crée une seule ligne vide.

Hakim
la source
Eh bien, en ajoutant, <esc>vous passez à nouveau du mode d'insertion au mode de commande. Je pense qu'il cherche une réponse qui ne passe pas du tout en mode insertion.
Bernhard
Oh! J'ai oublié de quitter le mode d'insertion avec <esc>. Dans ce cas, cela fonctionnera. Il dupliquera même la ligne éditée sur toutes les lignes suivantes.
Hakim
0

Pour insérer une ligne vierge après la ligne actuelle tout en restant en mode commande, utilisez:

: r !echo

Il s'agit de la commande " read in a file", mais au lieu de lui donner un nom de fichier, nous lui demandons de lire la sortie d'une commande shell ( !); cette commande shell, echoimprime simplement une ligne vierge. Une fois la ligne vierge insérée, vous restez en mode commande.

Jeff Schaller
la source
-2

Je suis surpris que personne d'autre n'ait mentionné cela:

Utilisez 'r' suivi de 'Enter key' en mode ligne de commande.

En retard à la fête de 7 ans cependant :)

Akhilesh Siddhanti
la source
1
Sauf que cela vous fait sortir du mode commande et remplace la ligne actuelle par une ligne vide.
Jeff Schaller
Je ne sais pas ce que dit @Jeff. Mes observations concernant cette commande sont (1) cela ne fonctionne pas si vous êtes actuellement sur une ligne vierge et (2) sinon, il supprime le caractère sous le curseur.
Scott
Je me suis mal exprimé; rremplace en effet le caractère actuel. Vous emmène toujours en mode commande.
Jeff Schaller
D'accord. Il s'agit d'une limitation: elle doit être effectuée sur une ligne non vide + sur un espace vide avant la ligne. N'y ai pas pensé. Merci.
Akhilesh Siddhanti