Quelle commande puis-je exécuter pour supprimer les lignes vides dans Vim?
Quelle commande puis-je exécuter pour supprimer les lignes vides dans Vim?
Réponses:
:g/^$/d
:g
exécutera une commande sur les lignes qui correspondent à une expression régulière. Le regex est «ligne vide» et la commande est :d
(supprimer)
:%!cat -s
peut être le choix ..
Je l'ai trouvé, c'est:
g/^\s*$/d
Source: Puissance de g à vim wikia
Brève explication de
:g
:[range]g/pattern/cmd
Cela agit sur la [plage] spécifiée (fichier entier par défaut), en exécutant la commande Ex cmd pour chaque modèle de correspondance de ligne (une commande Ex est une commençant par un deux-points comme
:d
pour supprimer). Avant d'exécuter cmd , ".
" est défini sur la ligne actuelle.
: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
\_$
signifie la fin de ligne qui peut être utilisée à l'intérieur d'un modèle ( $
ne peut être utilisée qu'à la fin du modèle.) Il en va de même \_^
pour le début d'une ligne et peut être utilisé n'importe où à l'intérieur du modèle. Ainsi, le motif correspond à une ligne vide, une nouvelle ligne et à nouveau une ligne vide. Voir la page d'aide de Vim regex .
:g/^$/,/./-j
comment supprimer toutes les lignes vides
:%s,\n\n,^M,g
(faites cela plusieurs fois, toutes les lignes vides ont disparu)
comment supprimer toutes les lignes vides en laissant SINGLE ligne vide
:%s,\n\n\n,^M^M,g
(faites cela plusieurs fois)
comment supprimer toutes les lignes vides laissant DEUX lignes vides AU MAXIMUM,
:%s,\n\n\n\n,^M^M^M,g
(faites cela plusieurs fois)
pour entrer ^ M, je dois contrôler-Q et contrôler-M dans les fenêtres
\r
à la place du Ctrl-M
.
Que diriez-vous:
:g/^[ \t]*$/d
travailler avec perl dans vim:
:%!perl -pi -e s/^\s*$//g
chomp
aussi le travail?
Cette fonction ne supprime que deux ou plusieurs lignes vides, 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>
J'ai essayé quelques-unes des réponses sur cette page, mais beaucoup d'entre elles ne fonctionnaient pas pour moi. Peut-être parce que j'utilise Vim sur Windows 7 (ne vous moquez pas, ayez juste 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 le 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 .vimrc, puis redémarrez votre vim. si vous utilisez la commande: 5,12DBL, elle supprimera toutes les lignes vides entre la 5e ligne et la 12e ligne. Je pense que ma réponse est la meilleure réponse!
Si quelque chose a doublé l'espacement de votre texte, cette commande supprimera le double espacement et fusionnera les lignes blanches répétitives préexistantes en une seule ligne vierge. Il utilise un délimiteur temporaire de ^^^ au début d'une ligne, donc si cela se heurte à votre contenu, choisissez autre chose. Les lignes contenant uniquement des espaces sont traitées comme vides.
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
Cela a fonctionné pour moi:
:%s/^[^a-zA-Z0-9]$\n//ig
Il supprime essentiellement toutes les lignes qui n'ont ni chiffre ni lettre. Étant donné que tous les éléments de ma liste avaient des lettres, il a supprimé toutes les lignes vides.