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?
GJ
invim
se déplacera à la dernière ligne puis essaiera de la joindre à la ligne suivante, le seul endroit où une commande de jointure n'aura pas de sens. Ouais, j'ai trouvé ça drôle :-)Vi ou Vim?
Quoi qu'il en soit, la commande suivante fonctionne pour Vim en mode «nocompatible». C'est, je suppose, presque pur vi.
Si vous voulez le faire à partir d'une utilisation normale de la commande
Avec 'gJ', vous joignez les lignes telles quelles - sans ajouter ni supprimer d'espaces:
Résultat:
Avec la commande 'J', vous aurez:
Notez l'espace entre
type>
et_ID
.la source
g/pattern/join
fonctionne dans VIM alors que ceg/pattern/J
n'est pas le cas. Pourrait aider certaines personnes futures.Cela devrait le faire:
J
la source
:h J
cela vous dira comment désactiver cette fonctionnalité.gJ
si vous ne voulez pas que vim ajoute un espace lors de la jonction des lignesEn vi,
J
(c'est Shift+ J) ou:join
devrait faire ce que vous voulez, pour la plupart. Notez qu'ils ajustent les espaces. En particulier, vous vous retrouverez avec un espace entre les deux lignes jointes dans de nombreux cas, et si la deuxième ligne est indentée, cette indentation sera supprimée avant la jointure.Dans Vim, vous pouvez également utiliser
gJ
( G, puis Shift+ J) ou:join!
. Ceux-ci joignent les lignes sans effectuer de réglage des espaces.Dans Vim, voir
:help J
pour plus d'informations.la source
gJ
etJ
est que les deux modifient le curseur au point de jonction, mais:join!
et:join
ne le font pas.Remplacez simplement le "
\n
" par "".Dans vi / Vim pour chaque ligne du document:
Si vous souhaitez confirmer chaque remplacement:
la source
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 .
la source
Appuyez sur Shift+ 4("$") sur la première ligne, puis sur Shift+ j("J").
Et si vous voulez de l'aide, allez dans vi, puis appuyez sur F1.
la source
Dans Vim, vous pouvez également utiliser
gJ
.ََ
la source
Une autre façon de joindre deux lignes sans placer le curseur sur cette ligne est:
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 à l'endroit où la ligne suivante doit être jointe, alors:
Dans les deux cas, nous n'avons pas besoin de
g
like:s#\n##g
, car sur une seule ligne, une seule\n
existe.la source
Shift+V
pour sélectionner toutes les lignes qui doivent être jointes, sauf la dernière, puis:'<,'>s/\n/, /
dans cet exemple, joindre des lignes en mettant une virgule et un espace à la fin de chacune. Notez que lorsque quelque chose est sélectionné et que nous tapons:
en mode normal, le'<,'>
apparaît automatiquement sur la ligne de commande.