web-dev-qa-db-fra.com

Comment joindre deux lignes dans vi?

J'ai deux lignes dans un fichier texte comme ci-dessous:

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT

Je veux ajouter les deux lignes dans vi comme ci-dessous:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT

La deuxième ligne a été supprimée et le contenu de la deuxième ligne a été ajouté à la première ligne.

Comment pourrais-je le faire en utilisant le mode commande dans vi?

160
Vijay

Shift+J supprime le caractère de changement de ligne de la ligne en cours; vous pouvez donc combiner la ligne en cours et la ligne suivante comme vous le souhaitez en appuyant sur la touche "J" à n’importe quel endroit de la ligne.

294
GJ.

Vi ou Vim?

Quoi qu'il en soit, la commande suivante fonctionne pour Vim en mode 'non compatible'. C'est, je suppose, presque pur vi.

:join!

Si vous voulez le faire avec une commande normale

gJ

Avec 'gJ', vous joignez des lignes telles quelles - sans ajouter ou supprimer des espaces:

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT

Résultat:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT

Avec la commande 'J' vous aurez:

S<Switch_ID>_F<File type> _ID<ID number>_T<date+time>_O<Original File name>.DAT

Noter l'espace entre type> et _ID.

58
Maxim Kim

Cela devrait le faire:

J

21
samg

Dans vi, J (c'est-à-dire shift-j) ou :join devrait faire ce que vous voulez, pour la plupart. Notez qu'ils ajustent les espaces. En particulier, vous vous retrouverez souvent avec un espace entre les deux lignes jointes, et si la deuxième ligne est indentée, l'indentation sera supprimée avant la jointure.

Dans vim, vous pouvez également utiliser gJ (g, puis shift-j) ou :join!. Ceux-ci vont rejoindre les lignes sans faire aucun ajustement des espaces.

Dans vim, voir :help J pour plus d'informations.

15
Laurence Gonsalves

Il suffit de remplacer le "\n" avec "".

Dans vi/Vim pour chaque ligne du document:

%s/>\n_/>_/g

Si vous souhaitez confirmer chaque remplacement:

%s/>\n_/>_/gc
4
Carsten C.

Si vous souhaitez joindre les lignes sélectionnées (vous êtes en mode visuel), appuyez simplement sur gJ pour joindre vos lignes sans aucun espace.

Ceci est décrit plus en détail sur le site vi/Vim Stack Exchange .

3
Brad Parks

Presse Shift + 4 ("$") sur la première ligne, puis Shift + j ("J").

Et si vous voulez de l'aide, entrez dans vi, puis appuyez sur F1.

1
ghostdog74

Une autre façon de joindre deux lignes sans placer le curseur sur cette ligne est la suivante:

:6,6s#\n##

Ici 6 est le numéro de ligne auquel une autre ligne sera jointe. Pour afficher le numéro de ligne, utilisez :set nu.

Si nous sommes sur le curseur où la prochaine ligne devrait être jointe, alors:

:s#\n##

Dans les deux cas, nous n'avons pas besoin de g comme :s#\n##g, car sur une ligne, un seul \n existe.

1
vusan

Dans Vim, vous pouvez également utiliser gJ.

1
joshy