Quelle commande puis-je exécuter pour supprimer les lignes vides dans Vim?
:g/^$/d
:g
exécutera une commande sur les lignes qui correspondent à une expression régulière. L'expression régulière est une "ligne vide" et la commande est :d
(supprimer)
Je l'ai trouvé, c'est:
g/^\s*$/d
Source: Puissance de g sur vim wikia
Brève explication de
:g
:[range]g/pattern/cmd
Ceci agit sur le [plage] spécifié (fichier entier par défaut), en exécutant la commande Ex cmd pour chaque ligne correspondant pattern (une commande Ex est une commande commençant par deux points, telle que
:d
pour la suppression). Avant d'exécuter cmd , ".
" est défini sur la ligne en cours.
:v/./d
ou
:g/^$/d
ou
:%!cat -s
Les éléments suivants peuvent être utilisés pour supprimer uniquement les lignes vierges multiples (les réduire à une seule ligne vierge) et laisser les lignes vierges intactes:
:g/^\_$\n\_^$/d
comment supprimer toutes les lignes vierges
:%s,\n\n,^M,g
(faites ceci plusieurs fois avec toutes les lignes vides partis)
comment supprimer toutes les lignes vierges en laissant SINGLE ligne vide
:%s,\n\n\n,^M^M,g
(faites ceci plusieurs fois)
comment supprimer toutes les lignes vides en laissant DEUX lignes vides AT MAXIMUM,
:%s,\n\n\n\n,^M^M^M,g
(faites ceci plusieurs fois)
pour entrer ^ M, je dois control-Q et control-M dans Windows
Que diriez-vous:
:g/^[ \t]*$/d
Cette fonction ne supprime que deux lignes vides ou plus, placez les lignes ci-dessous dans votre vimrc, puis utilisez\d pour appeler la fonction
fun! DelBlank()
let _s=@/
let l = line(".")
let c = col(".")
:g/^\n\{2,}/d
let @/=_s
call cursor(l, c)
endfun
map <special> <leader>d :keepjumps call DelBlank()<cr>
Ça marche pour moi
:%s/^\s*$\n//gc
travailler avec Perl in vim:
:%!Perl -pi -e s/^\s*$//g
J'ai essayé quelques réponses sur cette page, mais beaucoup d'entre elles n'ont pas fonctionné pour moi. Peut-être parce que j'utilise Vim sous Windows 7 (ne vous moquez pas, ayez pitié de moi: p)?
Voici le plus simple que j'ai trouvé qui fonctionne sur Vim dans Windows 7:
:v/\S/d
Voici une réponse plus longue sur Vim Wikia: http://vim.wikia.com/wiki/Remove_unwanted_empty_lines
:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line
pâte
:command -range=% DBL :<line1>,<line2>g/^\s*$/d
dans votre fichier .vimrc, puis redémarrez votre vim. Si vous utilisez la commande: 5,12DBL, toutes les lignes vides entre la 5ème et la 12ème lignes seront supprimées. Je pense que ma réponse est la meilleure réponse!
Presse delete touche en mode insertion pour supprimer les lignes vides.
Si quelque chose a un double interligne dans votre texte, cette commande supprimera le double espacement et fusionnera les lignes vides répétitives préexistantes en une seule ligne vierge. Il utilise un séparateur temporaire de ^^^ en début de ligne, donc si cela entre en conflit avec votre contenu, choisissez autre chose. Les lignes contenant uniquement des espaces sont traitées comme des blancs.
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
Cela a fonctionné pour moi:
:%s/^[^a-zA-Z0-9]$\n//ig
Il supprime fondamentalement toutes les lignes sans numéro ni lettre. Comme tous les éléments de ma liste avaient des lettres, toutes les lignes vides étaient effacées.