Dans Vim, quelle est la façon la plus simple d'adhérer à toutes les lignes dans un fichier en une seule ligne?
Je veux rejoindre toutes les lignes dans un fichier en une seule ligne. Quelle est la façon la plus simple de faire cela? J'ai eu la mauvaise chance en essayant d'utiliser les substitutions (\r\n
ou \n
ne semble pas obtenir ramassé correctement dans le cas de s/\r\n//
sur Windows). À l'aide de J
dans une expression de la plage ne semble pas fonctionner soit (probablement parce que la gamme n'est plus dans le "sync" après la première commande est exécutée).
J'ai essayé :1,$norm! J
mais ce seulement la moitié de la file - qui n'a de sens parce qu'il rejoint chaque fois en ligne.
Vous devez vous connecter pour publier un commentaire.
D'une autre manière:
"
ggVG
" visuellement sélectionne toutes les lignes, et "J
" se joint à eux.:%j
œuvres, c'est court, et ne nécessite pas le mode visuel.Ah, j'ai trouvé la réponse.
Fonctionne comme un charme.
MODIFIER: Comme l'a souligné dans le commentaire:
...supprime la gamme.
Vous pouvez le faire avec 3 touches de départ du mode normal:
:
entre en mode de commande%
se réfère à toutes les lignes dans le fichierj
exécute la commande joinMaintenant, il semble que cela ajoute un espace entre les lignes. Je ne suis pas sûr si vous voulez que ce.
Vous pouvez le faire en moins de trois touches:
n'est pas ed grand?
Manière cryptique:
(les trois premiers
q
claires de laq
registre, laqqJ@qq
enregistre une macro à laq
registre qui effectue une Jointure, puis appelleq
, et le dernier@q
l'exécute.Je suis surpris que personne n'évoque même l'autre sens:
Je suis tout aussi surpris que personne n'ait souligné que la gamme
1,$
a un texte qui est écrit%
.(Ce n'est pas faire la même chose que de rejoindre les lignes, mais selon les circonstances qui peuvent en fait être plus approprié.)