我有一堆sass文件,而且我的設計器使用了錯誤的語法。我想:margin-top 1px
但他確實margin-top: 1px
VIM,在多個文件上運行命令
所以我很容易寫了一個子命令:
:rubydo sub! /([\w-]+):/,':\1'
使作品和修復所有的冒號和我想的地方移動它們。我在stylesheets
目錄中有大約50個sass文件。我怎樣才能在一個鏡頭中對所有文件運行這個命令?我不確定如何在vim
中解決這個問題。可能與grep
有關?我無法告訴你。
我有一堆sass文件,而且我的設計器使用了錯誤的語法。我想:margin-top 1px
但他確實margin-top: 1px
VIM,在多個文件上運行命令
所以我很容易寫了一個子命令:
:rubydo sub! /([\w-]+):/,':\1'
使作品和修復所有的冒號和我想的地方移動它們。我在stylesheets
目錄中有大約50個sass文件。我怎樣才能在一個鏡頭中對所有文件運行這個命令?我不確定如何在vim
中解決這個問題。可能與grep
有關?我無法告訴你。
看到這個:http://vimdoc.sourceforge.net/htmldoc/editing.html#:argdo
我現在學會了這個命令,但幫助是顯而易見的。
轉到爲:
:args *.css
:argdo %s/\([[:alpha:]-]\+\):/:\1/ge | update
下面是一個例子
:bufdo %s/oldStuff/newStuff/ge | update
只是改變你的正則表達式來滿足您的需求
更多信息':幫助bufdo' –
幾個步驟。
:vimgrep /^[^:]\w+/ %:p:h/* " find all of the lines that don't start with a colon
這將把所有的匹配到你的quickfix列表。
然後一個宏來做你想做的事情。
qa
I:<esc>
f:x
:w|cn<enter>
q
然後測試該宏幾次(與@a
)。 然後另一個宏一遍一遍運行該宏...
qbq " this clears out b before starting, very important!
[email protected]@bq
@b " watch in amazement. :)
我認爲這種情況下,最好的工具是sed,流編輯器。
sed -i.old 's/:\([-a-z]*\)/\1:/' *.css
這將編輯所有的.css文件離開原有的與.old爲擴展。
sed使用的一組正則表達式有點不同,並且取決於您的版本或多或少有限。我使用的表達式顯然適用於您的案例 - 使用BSD工具。
+1'argdo','bufdo'太一般了。如果您不想更改全局參數列表,您還可以使用':argl'在窗口的本地創建一個參數列表。 –
我發現這篇文章對這個問題非常有幫助:http://www.ibrahim-ahmed.com/2008/01/find-and-replace-in-multiple-files-in.html – webdesserts