306 votes

Supprimer une nouvelle ligne dans Vim

Existe-t-il un moyen de supprimer la nouvelle ligne à la fin d'une ligne dans Vim, de sorte que la ligne suivante soit ajoutée à la ligne actuelle ?

Par exemple :

Evaluator<T>():
    _bestPos(){
}

J'aimerais mettre tout cela sur une seule ligne sans avoir à copier des lignes et à les coller dans la précédente. Il me semble que je devrais pouvoir placer mon curseur à la fin de chaque ligne, appuyer sur une touche et faire sauter la ligne suivante sur celle où se trouve le curseur.

Résultat final :

Evaluator<T>(): _bestPos(){ }

Est-ce possible dans Vim ?

1 votes

Del à la fin de la ligne dans le mode insertion de vim fonctionnait pour moi. Pas dans tous les terminaux, cependant.

655voto

Xhantar Points 1825

Si vous êtes sur la première ligne, appuyez sur (majuscule) J joindra cette ligne et la suivante ensemble, en supprimant la nouvelle ligne. Vous pouvez également combiner cette opération avec un comptage, en appuyant sur 3J combinera les 3 lignes ensemble.

33 votes

Comme indiqué dans une autre réponse, gJ évitera d'ajouter les espaces que Vim peut choisir d'ajouter lors de l'utilisation de J .

9 votes

Vous pouvez également sélectionner toutes les lignes que vous voulez joindre en utilisant V (Mode Ligne visuelle) puis appuyez sur J ou gJ

0 votes

Si vous voulez garder la position du curseur, utilisez :join et :join! qui joindra les lignes en gardant la position du curseur et ne gardera pas d'espace au point de jonction. vous pouvez également le mapper comme suit : nnoremap <Leader>j :joing<cr> et nnoremap <Leader>gj :join!<cr> .

89voto

TumbleCow Points 1931

Certainement. Vim reconnaît le \n comme une nouvelle ligne, de sorte que vous pouvez simplement chercher et remplacer. En mode commande, tapez :

:%s/\n/

1 votes

Merci, mais je ne veux pas de recherche et de remplacement global.

20 votes

La suppression du % s'en charge. Ainsi, cela ne se produira que sur la ligne où se trouve le curseur. Vous pouvez également spécifier une plage telle que :11,15s/. \n / (lignes 11-15) ou :,+7s/ \n / (cette ligne et les sept suivantes) ou :-3,s/ \n / (les trois lignes précédentes et celle-ci)... vous voyez l'idée

1 votes

Ou vous pouvez sélectionner un V -et le remplacer.

54voto

Alligator Points 841

Sur la ligne supérieure en mode normal, appuyez sur Shift + j .

Vous pouvez aussi ajouter un compte avant le début, donc 3J sur la ligne du haut réunirait toutes ces lignes.

32voto

ephemient Points 87003

J supprime l'espacement de tête supplémentaire (s'il y en a un), en joignant les lignes avec un seul espace. (Avec quelques exceptions : après /[.!?]$/ deux espaces peuvent être insérés ; avant /^\s*)/ aucun espace n'est inséré).

Si vous ne voulez pas de ce comportement, gJ supprime simplement la nouvelle ligne et ne fait rien d'intelligent avec les espaces.

10voto

kzh Points 5098

Toutes les propositions suivantes supposent que votre curseur se trouve sur la première ligne :

Utilisation de mappings normaux :

3Shift + J

Utilisation des commandes Ex :

:,+2j

Qui est une abréviation de

:.,.+2 join

Qui peut également être saisi par le raccourci suivant :

3:j

Une commande Ex encore plus courte :

:j3

2 votes

Sans espace entre eux :j!3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X