2011-11-13 181 views
3

替換內部如何替換?替換Vim中的替換

我知道你可以將光標下的當前單詞放到替換下,但是我想在它作爲輸出之前執行替換。

例如:

  • 擁有已通過clbuttic filter通過的文件,並替換你知道已經影響到了惡化的話,比如去機構(提示:美利堅合衆國Consbreastution)。該文件還包含一些正確替換的文字。
  • 在Wooloomooloo更改o0(只爲這個詞)在整個

文檔的現實世界的例子(從我的VIM歷史)一個乳膠文檔中正在運行

%s/\\begin{table}\[h\]/\\begin{table}\[H\]/c 

在那裏我複製字符串只是爲了得到一個小小的改變。

回答

2

更換Ø0很簡單:

:s/o/0/g 

也許你想知道如何將它應用到(視覺)的選擇?

:s/\%Vo/0/g 

編輯可能是你想要的東西(見註釋)

:%s/\<\zs[Wolm]\+\>\ze/\=substitute(submatch(0), 'o', '0', 'g')/g 

這裏做的事情:

  • [Wolm]\+匹配序列包括剛剛Wolm
  • \<[Wolm]\+\>匹配(獨立)單詞相同(所以,Wooloomooloo,或mooW,Wlomo都會匹配,但不是amool等)。
  • \zs標誌着比賽的開始進行更換,\ze結束
  • \=substitute(submatch(0), 'o', '0', 'g')替換匹配(\zs\ze之間),但subsituting 0o

您可以從這種模式啓動

  • [Wolm]\+替換爲您的實際目標
  • 添加可選範圍之外\zs...\ze這樣就可以減少比賽
  • 在圖案的前面添加\c啓用不區分大小寫的匹配
+0

更新問題澄清。你的建議可能會取代所有的「o」或只是替換一個實例(除非我錯了) – Portablejim

+0

好的,所以'%s/Wooloomooloo/W00l00m00l00/g' ...? – sehe

+0

是的,只需要手動執行替換 – Portablejim

0

嘗試輸入按Ctrl - ˚F,而你寫您的:sub命令。這將打開命令行窗口並允許您使用vim的普通模式編輯您的命令。如果在此模式下按Enter鍵,則會執行當前行。如果按Ctrl - c,您將回到命令行模式,並將當前行作爲當前文本。

命令行窗口也是當您不小心輸入q:時發生的情況。 (我知道我這樣做之前,瞭解什麼是一個不少。它也有以前的命令的歷史。一個/搜索過程中也儘量相同或鍵入q/

參見:help cmdline-window