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
답변1
:%s/.*\(https:\)/\1/
:
모드 로 들어갑니다 ex
.
%
1 번째 1,$
줄부터 끝까지
s/
구분 기호로 사용됩니다 substitute
./
.*\(https:\)
다음 내용은 https:
https를 기억하세요.
\1
기억에 남는 글이다.
답변2
아마도 최선의 접근 방식은 아니지만 작동합니다.
:%s/^.*https/https/g
줄의 시작 부분부터 https
모든 것을 교체하십시오 https
.
답변3
지금까지 다른 답변은 접두사를 캡처하거나 복사하는 정규식을 사용하여 일반적인 대체를 보여주었습니다 https
. 하지만 Vim에 대해 문의하신 것이므로 좋은 방법으로 경기를 일찍 종료하면 이러한 문제를 피할 수 있습니다.\ze
원자:
:%s/.*\zehttps://
이것은 :substitute
모든 줄( ), :%
줄의 시작부터 마지막(!) 일치( )까지의 모든 항목에서 작동합니다(탐욕적이지 않은 일치 사용(한 줄에 두 번 이상 나타날 수 있는 경우)). 그러나 끝 일치 is just on ( ) 이전에는 비어 있음()으로 대체합니다..*
https:
.\{-}
\ze
//
짧은 스마트 대안
주석에서 이미 언급했듯이 URL로 모든 줄을 찾은 다음 커서 위치에서 첫 번째 일치 항목( ) :global
을 삭제하여 검색 패턴을 설정하는 것은 쉽습니다 .dn
:global/http/normal! dn
모호한 대안
0d/https<CR>qqqqqjdn@qq@q
현재 라인( 0d/https<CR>
)에 대한 일치 항목을 수동으로 제거한 다음 레지스터 q
( qqq
)를 지우고 로깅을 시작합니다.재귀 매크로( qq
) 다음 줄로 이동 ( j
), 일치하는 항목이 있을 때까지 삭제 ( dn
), 재귀 시작 ( @q
), 기록 종료 ( q
), 마지막으로 매크로를 트리거 ( @q
)하여 더 이상 일치하는 항목이 없을 때까지 실행됩니다.
답변4
이 특별한 경우 리터럴 공백 문자는 URL에 포함되지 않으므로 각 줄에 바꾸기를 적용하여 마지막 공백 앞의 모든 항목을 제거할 수 있습니다.
:% s/.* //