如何在Vim中編寫這個perl regex replace命令? (來自this pandoc epub tutorial服用):vim中的Perl正則表達式?
perl -i -0pe \
's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg' \
*/*.markdown
如何在Vim中編寫這個perl regex replace命令? (來自this pandoc epub tutorial服用):vim中的Perl正則表達式?
perl -i -0pe \
's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg' \
*/*.markdown
我不能爲-i -0pe
標誌說話,但正則表達式:
s/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg
是:
請注意,你必須逃脫捕獲組和我在第二捕獲組中使用.*
而不是[^\n]*
。你不需要多行標誌。
美麗,謝謝! – drozzy 2012-02-07 15:23:09
有一個名爲'eregex.vim'的插件,可以自動將PCRE翻譯成Vim的語法。 – 2014-01-11 20:05:30
讓您現有的一行到一個管道過濾器
perl -pe 's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg'
然後使用1G!G
或:%!
在Vim來管當前文件通過過濾器,例如
:%!perl -pe 's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg'
很多你正在尋找的東西取決於你設置的「魔術」設置。請參閱:help magic
瞭解更多關於vim需要從字面上理解的內容。
你能添加一個它應該匹配的例子嗎?正如我寫的,我不確定應該逃脫多少個符號。 '\ s *'匹配「」還是「*」?我假設後者。 – 2012-02-07 15:13:57