Vim supprimer les lignes vierges

quelle commande puis-je exécuter pour supprimer les lignes vides dans Vim?

606
demandé sur Kevin Panko 2009-04-01 19:34:13

14 réponses

:g/^$/d

:g exécutera une commande sur les lignes qui correspondent à un regex. Le regex est 'blank line' et la commande est :d (supprimer)

1113
répondu soulmerge 2010-06-18 08:27:14

trouvé, il est:

g/^\s*$/d

Source: puissance de g at vim wikia

166
répondu nearly_lunchtime 2015-05-05 15:38:23
:v/./d

ou

:g/^$/d

ou

:%!cat -s
48
répondu mandaleeka 2009-04-01 15:36:42

on peut utiliser ce qui suit pour supprimer seulement les lignes à plusieurs blancs (les réduire à une seule ligne) et laisser intactes les lignes à un seul blanc:

:g/^\_$\n\_^$/d
40
répondu Draemon 2009-04-07 14:52:09
  1. comment supprimer toutes les lignes à blanc

    :%s,\n\n,^M,g
    

    (plusieurs fois util toutes les lignes vides sont allés disparu)

  2. comment supprimer toutes les lignes vides

    :%s,\n\n\n,^M^M,g
    

    (plusieurs fois)

  3. comment supprimer toutes les lignes à blanc laissant deux lignes vides au MAXIMUM,

    :%s,\n\n\n\n,^M^M^M,g
    

    (plusieurs fois)

pour entrer ^M, je dois contrôler-Q et contrôle-M dans windows

12
répondu gauge00 2012-10-26 08:04:42

Que Diriez-vous de:

:g/^[ \t]*$/d
6
répondu 2009-04-01 15:38:21

travailler avec perl dans vim:

:%!perl -pi -e s/^\s*$//g

5
répondu niejieqiang 2012-05-01 13:17:18

Cela fonctionne pour moi

:%s/^\s*$\n//gc

5
répondu allenhwkim 2014-02-28 16:34:08

cette fonction ne supprime que deux lignes vierges 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>
5
répondu SergioAraujo 2017-12-11 18:25:56

j'ai essayé quelques réponses sur cette page, mais beaucoup d'entre eux ne fonctionne pas pour moi. Peut-être parce que J'utilise Vim sur Windows 7 (ne vous moquez pas, ayez pitié de moi :p)?

voici le plus facile que j'ai trouvé qui fonctionne sur Vim dans Windows 7:

:v/\S/d

Voici une réponse plus longue sur la Wikia Vim: http://vim.wikia.com/wiki/Remove_unwanted_empty_lines

4
répondu Pokey 2014-04-07 16:26:14
:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line

coller

:command -range=% DBL :<line1>,<line2>g/^\s*$/d

dans votre .vimrc,puis redémarrez votre vim. si vous utilisez la commande: 5,12 DBL il supprimera toutes les lignes vides entre la cinquième et la douzième ligne. Je pense que ma réponse est la meilleure réponse!

3
répondu cn8341 2014-05-04 00:46:37

si quelque chose a un double interligne de votre texte, alors cette commande supprimera le double interligne et fusionnera les lignes vides répétitives préexistantes en une seule ligne vide. Il utilise un délimiteur temporaire de ^^^ Au début d'une ligne donc si cela entre en conflit avec votre contenu, Choisissez autre chose. Les lignes ne contenant que de l'espace blanc sont traitées comme des lignes vierges.

%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
2
répondu MisterW 2014-08-01 06:48:33

cela a fonctionné pour moi:

:%s/^[^a-zA-Z0-9]$\n//ig

il supprime essentiellement toutes les lignes qui n'ont pas de numéro ou de lettre. Comme tous les éléments de ma liste avaient des lettres, elle supprimait toutes les lignes vierges.

1
répondu user1481441 2014-01-03 23:48:55

appuyer sur supprimer touche en mode insertion pour supprimer les lignes vides.

1
répondu akp 2017-08-17 10:10:27