說發生了,我有一個文件:VIM替換字符串時的變化在另一個地方
Program foo
<program text>
End Program foo
是否有可能,如果我改變在第一線bar
字foo
(這可能不是第一行文件),最後一行的foo
也會自動更改爲bar
?
說發生了,我有一個文件:VIM替換字符串時的變化在另一個地方
Program foo
<program text>
End Program foo
是否有可能,如果我改變在第一線bar
字foo
(這可能不是第一行文件),最後一行的foo
也會自動更改爲bar
?
我通常會做這樣的事情如下:
*
或#
(這分別搜索這個詞向前或向後,只有這個詞作爲一個整體,所以在你的例子只有foo
事件被發現,沒有foobar
或myfoo
)caw<new name><ESC>
n
跳轉到下一個可能發生,按.
重複名稱更改操作,如果需要你也可以使用一個單一的搜索和替換命令狀:%s/\<foo\>/new_name/gc
然後按y
或n
每foo
發生,但我個人更喜歡上述方法,因爲它可以節省我輸入foo
和從記住把\<
和\>
圍繞它(#
/*
爲我做這個)。
如果您確定要替換所有出現foo
到bar
,您可以從省略c
onfirm標誌搜索和替換命令,那麼這將是你想要做什麼的最短途徑我能想到的。
你可以使用全局命令和查找和替換,以紀念開始EN面積的停止,應該是取代這樣
:g/^Program foo$/.,/foo$/s//bar
擊穿
:g Starts the global command
/^Program foo$ Search for Program foo where the line starts with Program and ends with foo
/.,/foo$/ for each mach, expand the rang until the next foo at the end of the line
s//bar substitute your last search results with bar
@Lieven ......謝謝....嘗試它 – BaRud
它的確有它的皺紋。更簡單的版本是'g/^ \ zsProgram foo $ /。,/ Program foo $/s/Program \ zsfoo/bar',但這很難馬上得到解決。 –
你可以試試這個插件,我想它會正是你想要的:
假設你的光標在程序名上,這可以很容易地完成。
更改程序名稱:
ciW
foobar<Esc>
移動到程序結束:
/End<CR>
$
重複變化:
.
我忍不住想到(我很喜歡vim),知道源代碼的IDE就是你真正想要的東西 –
True ...但是如果IDE有它,那麼vim中也必須有一種方法.....對於一個文件類型 – BaRud
我所做的一點是,IDE將更加意識到源結構/語法樹等。 Intellij深入瞭解Java語法,vim不是 –