2017-05-10 11 views
1

を検索と置換: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 

しかし、それは完全な文字列を入力する必要があります。これは可能ですか?

答えて

3
  • たとえば、変更するテキストのパターンがあります。 super.\{-}\.eu

OR

  • あなたのカーソルを移動し、変更したい部分(f, tはあなたを助けるかもしれない)ヤンク、そして:s/\V<c-r>"はリテラルマッチ(:h \V)を行うとヤンクテキスト(:h i_ctrl-r)が貼り付けられます
2

私はfooが正規表現であることを前提としていますので、必要に応じて文字列を指定することができます。 g。

%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 
[email protected] 
+0

あなたの提案は驚きをもたらす可能性が.. – Kent

+0

'。*'を意味しますか?まあ、それは正規表現なので、人々はそれらについて知る必要があります.....ほとんどの場合、書くほうが速いです。 ...大丈夫、私はそれを変更します。 – steffen

+0

貪欲な '。*'だけでなく、マクロも。 Opの例では、すべての「スーパーリスト...」を置き換える必要はありません。あなたのマクロは期待以上のものを取り除くかもしれません。とにかく、私はあなたが具体的なコードではなく、その方法を示していたと信じています。だから大丈夫です。 – Kent

関連する問題