是否有無法通過命令行在文件上執行Vim命令?在命令行中在Vim內執行命令
我知道事實正好相反這樣的:
:!python %
但如果我想:retab
一個文件,而無需在Vim中打開它?例如:
> vim myfile.c
:retab | wq
這將打開myfile.c,用空格替換選項卡,然後保存並關閉。我想以某種方式將這個序列鏈接到一個單一的命令。
這將是這樣的:
> vim myfile.c retab | wq
是否有無法通過命令行在文件上執行Vim命令?在命令行中在Vim內執行命令
我知道事實正好相反這樣的:
:!python %
但如果我想:retab
一個文件,而無需在Vim中打開它?例如:
> vim myfile.c
:retab | wq
這將打開myfile.c,用空格替換選項卡,然後保存並關閉。我想以某種方式將這個序列鏈接到一個單一的命令。
這將是這樣的:
> vim myfile.c retab | wq
這爲我工作:
gvim -c "set et|retab|wq" foo.txt
set et
(= set expandtab
)確保tab
字符獲取正確數量的空格代替(否則,retab
將不起作用)。
我通常不使用它,但vim -c ...
也適用
您有幾種選擇:
-c "commands"
:將發揮你在命令行中輸入他們Ex命令。
在你的例子中:vim myfile -c 'retab | wq'
。這就是Firstrock所建議的。
-S "vim source file"
:將源給出的vim腳本
(如跑步vim -c "source 'vim source file'"
):
如果你有一個文件script.vim
包含:
retab
wq
然後你可以使用vim myfile.c -s script.vim
(擴展名並沒有真正問題)
-s "scriptin file"
:將播放fi的內容樂,因爲它包含正常模式命令:如果你有script.txt
包含:
:retab
ZZ
使用由單個^M
字符的線的端部(例如,你使用:set fileformat=mac | w
保存的腳本),然後就可以運行:vim myfile.c -S script.txt
(ZZ
是退出vim並保存當前文件的另一種方式)。
請注意,如果您碰巧使用gvim(GUI),則可以使用vim my_file -W script.txt
來錄製這些腳本,但它可以使用suffers a bug。
如果你像我一樣只想執行一些命令,在某些shell中可以使用'vim -S <(echo -e「VundleInstall \ n q \ n q」)''。 – Minix 2016-12-13 10:49:19
不是直接回答你的問題,但如果你想空格替換選項卡(或做任何其他的正則表達式查找/替換)的文件列表,你可以使用就地sed的搜索/取代:
sed -i 's/\t/ /g' foo1.txt foo2.txt
或
ls *.txt | xargs sed -i 's/\t/ /g'
(在這個例子中我正在與三個空間代替每個製表符。)
注意:-i
標誌表示就地操作。
從sed
手冊頁:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension
supplied)
這是卓有成效的,謝謝! – syvex 2012-02-20 18:41:33