How to run command over multiple buffers/tabs to r

2019-02-02 19:14发布

问题:

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.

回答1:

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>


回答2:

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, and :help :bufdo.