regex Vim:搜索并替换长字符串

inb24sb2  于 2023-01-06  发布在  其他
关注(0)|答案(2)|浏览(145)

我有以下文件:

[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

我想快速地superlists-staging.ottg.eu用“www.example.com“替换“mysite.com“,而不用键入整个字符串“superlists-staging.ottg.eu“(假设下次有一个200个字符的字符串)。

:%s/foo/bar/g

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

pu3pd22g

pu3pd22g1#

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

  • 你移动你的光标并且猛拉你想要改变的部分(f, t可能帮助你),然后:s/\V<c-r>"将做文字匹配(:h \V)并且粘贴猛拉的文本(:h i_ctrl-r
wrrgggsh

wrrgggsh2#

我假设你知道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

相关问题