[ACCEPTED]-Execute a command within Vim from the command line-vim
gvim -c "set et|retab|wq" foo.txt
set et (=
set expandtab) ensures the
tab characters 7 get replaced with the correct number of 6 spaces (otherwise,
retab won't work).
I don't 5 normally use it, but
vim -c ... also works
The solution 4 as given above presumes the default tab 3 stop of eight is appropriate. If, say, a 2 tab stop of four is intended, use the command 1 sequence
"set ts=4|set et|retab|wq".
You have several options:
-c "commands": will play Ex 13 commands as you entered them in the command 12 line.
In your example :
vim myfile -c 'retab | wq'. This is what 11 Firstrock suggested.
-S "vim source file": will source given 10 vim script
vim -c "source 'vim source file'"):
If you have 9 a file
Then you can use
vim myfile.c -s script.vim(the 8 extension does not really matter)
-s "scriptin file": will 7 play contents of file as it contains normal mode commands: If 6 you have
with end of lines consisting of a single
^Mcharacter (for example you saved 5 the script using the
:set fileformat=mac | w), then you can run:
vim myfile.c -S script.txt(
ZZis 4 another way to exit vim and save current 3 file).
Note that you can record those scripts 2 with
vim my_file -W script.txt, but it suffers a bug if you happen to use gvim 1 (the GUI).
Not a direct answer to your question, but 7 if you want to replace tabs with spaces 6 (or do any other regex search/replace) for 5 a list of files, you can just use in-place 4 sed search/replace:
sed -i 's/\t/ /g' foo1.txt foo2.txt
ls *.txt | xargs sed -i 's/\t/ /g'
(In this example I 3 am replacing each tab character with three 2 spaces.)
-i flag means operate in-place.
From 1 the
sed man page:
-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied)
More Related questions