views:

211

answers:

3

I have a command to tidy up excessive whitespace in my code in vim:

" to tidy excess whitespace
map <leader>1 :execute ':%s#\s\+$##g'<CR>

My question is, if I have 10 tabs or buffers open, how can I apply this command to all of them, rather than just going to each one and applying the command.

Thanks, Stephen

+1  A: 
:help windo
:help bufdo
kemp
+3  A: 

See this vim tip on using bufdo, windo, and tabdo.

Assuming all your buffers are in the buffer list, your map could be as simple as

" to tidy excess whitespace
map <leader>1 :execute ':bufdo! %s#\s\+$##g'<CR>
Greg Bacon
+1  A: 

Not tested, but this should do it:

:tabdo %s/SEARCH/REPLACE/ge | update

This replaces SEARCH in all tabs with REPLACE and writes the file if it is modified by the command without showing an error message if nothing is found.

If you want to be asked before each replacement, add 'c' to the flags.

See also help :argdo, help :windo, help :bufdo.

Habi