web-dev-qa-db-ja.com

置換を使用して、線上のポイントまでをすべて削除します

Vimでグローバル置換を使用して、すべて削除します最大https

The website is https://website.com
The website is https://website.com
The website is https://website.com

https://website.com
https://website.com
https://website.com
2
squire
_:%s/.*\(https:\)/\1/
_

_:_は、exモードに入ります。

_%_は_1,$_と言う簡単な方法です。つまり、行番号1から最後までです。

_s/_はsubstituteで、区切り文字として_/_を使用しています。

.*\(https:\)は、httpsを思い出して_https:_が後に続くものです。

_\1_は記憶されたテキストです。

4
icarus

おそらく最良のアプローチではありませんが、それは機能します。

:%s/^.*https/https/g

行頭からhttpsまでのすべてをhttpsに置き換えます。

3
Panki

これまでの他の回答は、https接頭辞をキャプチャまたは複製する正規表現による一般的な置換を示しています。ただし、Vimについて質問しているので、気の利いた \ze アトム:

:%s/.*\zehttps://

この :substitutesすべての行(:%)すべて(.*)行の先頭から(最後の(!)一致)までhttps:(貪欲でないマッチングを使用する(.\{-})1行に複数のオカレンスが存在する可能性がある場合)、ただしその直前に一致を終了します(\ze)、それを何にも置き換えません(//)。

短い賢い選択肢

すでにコメントで言及されています、:globalは、URLを含むすべての行を検索し、検索パターンを簡単に設定して、カーソル位置から最初の一致(dn)まで削除します。

:global/http/normal! dn

あいまいな代替

0d/https<CR>qqqqqjdn@qq@q

現在の行の一致を手動で削除します(0d/https<CR>)、次にレジスタqqqq)をクリアし、再帰マクロqq)次の行(j)に移動し、一致するまで削除し(dn)、再帰を準備します(@q)、記録を終了し(q)、最後にマクロをトリガーします(@q)一致がなくなるまで実行されるようにします。

2
Ingo Karkat