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?
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.
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
.
Cela devrait le faire:
J
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.
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
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 .
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.
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.
Dans Vim, vous pouvez également utiliser gJ
.