2011-02-02 126 views
2

我需要在數千個文件上執行vim命令,而不會受到交互模式緩慢的影響。我想:在沒有交互模式的情況下執行vim命令

 
    find ... | xargs vim '+set fileencoding=utf-8 | x' 

 
    for file in ... ; do 
     vim '+set fileencoding=utf-8 | x' $file 
    done 

但它太慢了,我必須警告

 
Vim : Warning : Output is not to a terminal 

是無法避免的vim交互模式?

PS:我,否則可以使用iconv,但它會導致錯誤與文件> 32 KO

 
    iconv --from-code=ISO-8859-1 --to-code=UTF-8 $file -o $file 
+0

「但它會導致文件> 32 KO的錯誤」 - 是應該閱讀「kb」而不是「ko」? – 2011-02-02 18:44:30

回答

3

我會做:

find .... -print0 | xargs -0 vim -c 'argdo set fenc=utf8' -c 'wqa' 
+0

我的完整find命令是`find -exec file -i {} \; | grep iso-8859 | awk -F':''{print $ 1}'`,所以`-print0 | xargs -0`很難。通過`xargs vim -c'argdo設置fenc = utf8'-c'wqa'`,終端的行爲會奇怪(從vim轉義字符?)。但在for循環中,它工作得很好。感謝您的回覆 – 2011-02-03 11:59:38

1

文件類型,語法和縮進插件可能是什麼你放慢下。 這些在你的〜/ .vimrc指定用線,看起來像典型:

filetype plugin indent on 
  • 你可以嘗試評論說出來,或者
  • 可以啓動Vim沒有你的插件和〜/。的vimrc但正是住在nocompatible模式:

    VIM -NU NONE

+0

它工作得很好。謝謝回覆。 – 2011-02-03 12:01:17

相關問題