2009-05-05 58 views
0

我需要更換如下:使用VI如何搜索和替換以下語句?

CREATE TABLE /*!32312 IF NOT EXISTS*/ `access` 

CREATE TABLE IF NOT EXISTS `access` 

我已經試過

:%s/\/\*\!\d+(.*)\*\//\1/g 

但是,這似乎並沒有去。我究竟做錯了什麼?

回答

4

vim需要反斜槓+(或使用*代替)。另外,你需要在vim中反斜槓分組括號。因此:

:%s/\/\*\!\d\+\(.*\)\*\//\1/g 

是的,Vim的舊式POSIX正則表達式吸:/

編輯:在下面的評論中提到,如果+轉義爲\ +不工作。 \ d實際上是支持的,哎呀。編輯示例正則表達式來解決這個問題。另請參閱Brian Carper的示例以獲得更簡潔易讀的版本。

+3

VIM不支持+,你只需要逃避它, 「\ +」 – 2009-05-05 05:39:15

4

使用「非常神奇」,並使用默認值以外的分隔符來使其更容易閱讀(並記住)。

:%[email protected]\v/\*!\d+(.*)\*/@\[email protected] 

沒有「非常神奇」你必須把一個反斜槓在+()前(但不是在*前面或一些其他的東西)。這不是很一致。

1

略有不同的是,用更高效的[^ *] + :-)

1,$s/\v\/\*\!\d+\s*([^*]+)\*\//\1