2017-08-10 114 views
-2

例如,給定文本:在UNIX/VIM,替代某些文本,如果行中包含某些文字

source: today is monday 
target: tomorrow is monday 

我想替換'monday''tuesday'如果行包含'target'

+0

這種問答** **可能是在S.E.更合適相關網站http://superuser.com或http://vi.stackexchange.com。使用Q底部的'flag'鏈接並請主持人移動它。請不要在2個不同的網站上發佈相同的Q.在此處發佈更多Q​​值之前,請閱讀http://stackoverflow.com/help/how-to-ask http://stackoverflow.com/help/dont-ask和http://stackoverflow.com/help/mcve。祝你好運 – shellter

回答

0

您可以使用\zs在模式所需的字符串之前設置比賽開始:

:%s/target.*\zsmonday/tuesday/ 

另一個(略少可讀性)可能是使用\@<=向後看斷言:

:%s/\(target.*\)\@<=monday/tuesday/ 
2

使用全局,:g和正常替換,:s

:g/target/s/monday/tuesday/g 

如需更多幫助,請參見:

:h :s 
:h :g 
相關問題