Delete some lines with some exceptions
From Vim Tips Wiki
(Redirected from VimTip670)
Tip 670 Previous Next Created: March 3, 2004 Complexity: basic Author: Siegfried Bublitz Version: 5.7
I have several hundred file path names in a buffer, each filling a line, e.g. created with vim tip # 659.
About half of them are help files, starting with './help/' which I want to delete, but I want to keep the german ones, starting with './help/de/'. Here comes how I do it with Vim:
:global:^./help/:if (match(getline(line(".")), '^./help/de/') == -1) | delete | endif
[edit] Comments
Would this also do it?
:g#\./help/[^d][^e]#d
No, because lines like
./help/dk/and/the/rest/of/the/path
are not deleted. Instead use
g#\(^\./help/\)\(de/\)\@!#d
to delete all lines starting with './help/' but keep all lines starting with './help/de/'
g!/\.\/help\/de/d
This will only work if each line in the file starts with './help'.
