我需要更換如下:使用VI如何搜索和替換以下語句?
CREATE TABLE /*!32312 IF NOT EXISTS*/ `access`
到
CREATE TABLE IF NOT EXISTS `access`
我已經試過
:%s/\/\*\!\d+(.*)\*\//\1/g
但是,這似乎並沒有去。我究竟做錯了什麼?
我需要更換如下:使用VI如何搜索和替換以下語句?
CREATE TABLE /*!32312 IF NOT EXISTS*/ `access`
到
CREATE TABLE IF NOT EXISTS `access`
我已經試過
:%s/\/\*\!\d+(.*)\*\//\1/g
但是,這似乎並沒有去。我究竟做錯了什麼?
vim需要反斜槓+(或使用*代替)。另外,你需要在vim中反斜槓分組括號。因此:
:%s/\/\*\!\d\+\(.*\)\*\//\1/g
是的,Vim的舊式POSIX正則表達式吸:/
編輯:在下面的評論中提到,如果+轉義爲\ +不工作。 \ d實際上是支持的,哎呀。編輯示例正則表達式來解決這個問題。另請參閱Brian Carper的示例以獲得更簡潔易讀的版本。
使用「非常神奇」,並使用默認值以外的分隔符來使其更容易閱讀(並記住)。
:%[email protected]\v/\*!\d+(.*)\*/@\[email protected]
沒有「非常神奇」你必須把一個反斜槓在+
和()
前(但不是在*
前面或一些其他的東西)。這不是很一致。
略有不同的是,用更高效的[^ *] + :-)
1,$s/\v\/\*\!\d+\s*([^*]+)\*\//\1
VIM不支持+,你只需要逃避它, 「\ +」 – 2009-05-05 05:39:15