Vim:搜索并替换一个长字符串

时间:2017-05-10 14:55:04

标签: vim

我有以下文件:

[Unit]
Description=Gunicorn server for superlists-staging.ottg.eu

[Service]
Restart=on-failure  
User=elspeth  
WorkingDirectory=/home/elspeth/sites/superlists-staging.ottg.eu/source  
ExecStart=/home/elspeth/sites/superlists-staging.ottg.eu/virtualenv  /bin/gunicorn \
--bind unix:/tmp/superlists-staging.ottg.eu.socket \
superlists.wsgi:application  

[Install]
WantedBy=multi-user.target 

我想用“mysite.com”快速替换“superlists-staging.ottg.eu”而不输入整个字符串“superlists-staging.ottg.eu”(假设下次有200个字符的字符串) 。我知道:

:%s/foo/bar/g

但这需要输入完整的字符串。这可能吗?

2 个答案:

答案 0 :(得分:3)

  • 您会找到要更改的文字的模式,例如。 super.\{-}\.eu

OR

  • 移动光标并拉动要更改的部分(f, t可能会对您有帮助),然后:s/\V<c-r>"将进行文字匹配(:h \V)并粘贴被拉动的文字({ {1}})

答案 1 :(得分:2)

我假设您知道foo是正则表达式,因此您可以根据需要指定字符串,例如:克。

%s/superlists.\{-}\.eu/mysite.com/g

如果您想让它更具互动性,可以先进行搜索:

set incsearch
/superlists.\{-}\.eu/<ENTER>
%s//mysite.com/g

或使用宏:

qq
/superlists
c/.eu/e<ENTER>mysite.com<ESC>
q
100@q