Vim Tips Wiki
Advertisement
Tip 915 Printable Monobook Previous Next

created April 18, 2005 · complexity basic · author Ethan Mallove · version 6.0


I re-fell in love with :g/ when I discovered norm f{char}. In the following sample text, say you want to delete the two words between the name and the IP address, and "has address" isn't spelled the consistently throughout (preventing us from using :s/has address//). You can do this:

:g/\d\+\.\d\+\.\d\+\.\d\+/norm f w2dw

The above command changes this:

yahoo.com hav address 216.109.112.135
yahoo.com has addrwss 66.94.234.13
google.com hqs address 216.239.37.99
google.com has zddress 216.239.57.99
google.com has addrers 216.239.39.99
msn.com has addresr 207.68.172.246
vhost.sourceforge.net has addsess 66.35.250.210

to this:

yahoo.com 216.109.112.135
yahoo.com 66.94.234.13
google.com 216.239.37.99
google.com 216.239.57.99
google.com 216.239.39.99
msn.com 207.68.172.246
vhost.sourceforge.net 66.35.250.210

References

Comments

Or you could use :s

:%s/\s\zs\w\+\s\+\w\+//

Actually, this would work ':%g//norm f w2df ', assuming that the columns are separated by spaces instead of tabs.


Advertisement