답변:
이 명령을 사용하여 다음을 포함 This
하지 않는 행을 인쇄 할 수 있습니다 red
.
:g/\(.*This\)\&\(.*red\)\@!
\&
AND
두 조건 (분기)을 만족하는 선을 원하기 때문에 분기를 논리적으로 분리합니다 .\(.*This\)
첫 번째 브랜치입니다. 간단 할 수는 This
있지만 더 일반적입니다.\(.*red\)\@!
는 두 번째 분기로, \@!
논리와 같이 "앞의 원자가 일치하지 않으면 너비가 0이되지 않음"을 의미 NOT
합니다.다시 말해:
\(.*This\) \& \(.*red\)\@!
°°°°°°°°°° °° °°°°°°°°°°°°
'This' AND NOT 'red'
이 게시물을 살펴보십시오.
@romainl 답변과 결합하면 원하는대로 할 수 있습니다.
예 : const
함수가없는 함수 에 a 를 추가하고 싶다고합시다 .
handleChange = value => {
VIM 스크립트 :
%s/\([ ]*\)\(\w* = .*$\)\&^\(\&\(.*const.*\)\@!.\)*$/\1const \2/gc
산출:
const handleChange = value => {
설명:
\([ ]*\)\(\w* = .*$\)
-가지고있는 모든 줄을 가져와 word =
\&
-규칙 결합
^\(\&\(.*const.*\)\@!.\)*$
-라인에 포함되어서는 안됩니다 const
.