我試圖搜索並替換$data['user']
的$data['sessionUser']
。Vim搜索/替換:我需要逃脫什麼?
但是,無論使用哪種搜索字符串,我都會得到一個「找不到的模式」。
那麼,什麼是正確的搜索字符串?我需要逃避任何這些角色嗎? :%s/$data['user']/$data['sessionUser']/g
我試圖搜索並替換$data['user']
的$data['sessionUser']
。Vim搜索/替換:我需要逃脫什麼?
但是,無論使用哪種搜索字符串,我都會得到一個「找不到的模式」。
那麼,什麼是正確的搜索字符串?我需要逃避任何這些角色嗎? :%s/$data['user']/$data['sessionUser']/g
:%s/\$data\[\'user\'\]/$data['sessionUser']/g
我沒有測試這一點,但我想它應該工作。
[
char在正則表達式中有意義。它代表character ranges。 $
char也有意義。它代表end-line anchor。所以你必須逃避很多事情。我建議你嘗試一下像this或這個one這樣的小插件,並使用視覺搜索。
我真的很想找一個更容易搜索的選項。我會更多地瞭解內置的搜索和替換,但很可能我會嘗試其中一個向我展示的內容。謝謝。 – Falassion 2011-12-16 18:32:54
搜索和VIM取而代之的是幾乎相同sed
,所以使用相同的轉義,你會與:
:%s/\$data\['user'\]/$data['session']/g
請注意,您真正需要的只是逃避搜索部分特殊字符(部分在第一組//
之間)。您需要在替換部分中轉義的唯一字符是轉義字符\
本身(您在此未使用)。
沒有錯與給定的答案,但你可以這樣做:
:%s/$data\['\zsuser\ze']/sessionUser/g
\zs
和\ze
可用於分隔用替換影響了比賽的一部分。 您不需要轉義$
,因爲它處於模式的開始位置,並且無法匹配此處的EOL。而且您不需要轉義]
,因爲它沒有匹配的開始[
。但是,如果你不記得所有的規則,逃脫這些角色肯定沒有什麼壞處。請參閱:help pattern.txt瞭解詳細信息,但不要嘗試一次消化所有內容!
如果你想獲得幻想,你可以這樣做:
:%s/$data\['\zsuser\ze']/session\u&/g
&
指整個匹配的文本(由\zs
和\ze
如果存在分隔),因此它成爲「用戶」在這種情況下。在替換字符串中使用\u
時,會使下一個字符成爲大寫字母。我希望這有幫助。
你不需要替換部分中的逃逸。 – 2011-12-16 18:26:33
是的,它的工作。謝謝! – Falassion 2011-12-16 18:30:44