我試圖在vim中使用反向引用和正則表達式進行搜索和替換操作。有趣的是,它只會識別模式,如果我做一個純搜索,但如果我做一個搜索並替換它給了我一個E486:模式找不到錯誤。模式搜索,但不能在vim中搜索和替換?
我有一大堆的形式的函數調用:
function(Nullable<double>(1.1), map[FOO]);
其中foo是在每行一些不同的變量名。我希望把它變成
function(othermap[ FOO ], map[FOO]);
如果我嘗試
:%s/Null.*\(map[\)\(.*\)\]/othermap[ \2 \], \1\2\]/g
它給我的「未發現的錯誤模式。」即使
:%s/Null.*\(map[\)\(.*\)\]//g
將無法正常工作,因爲它只是不識別模式。但是,如果我嘗試使用完全相同的搜索正則表達式執行以下命令:
/Null.*\(map[\)\(.*\)\]
它正確地突出顯示。在此之後,我可以執行%s // othermap [\ 2],\ 1 \ 2]來替換。所以我終於可以做我的替換,但是我不能理解爲什麼這種模式會在一種情況下被識別,而在另一種情況下卻不會被識別。
的可能的複製[VIM不查找和替換一句簡單的話,這顯然是有](https://stackoverflow.com/questions/5289262/vim -does-not-find-and-replace-simple-phrase-that-is-clearly-present) –