vim, man 이하를 사용할 때 정규식에서 정확한 일치를 수행하고 싶습니다.
예를 들어 man을 사용할 때 '-c' 매개변수를 확인하고 싶습니다.
내가 사용한다면
/'-c'
-cim -covert......blabla와 일치할 수 있습니다.
하지만 '-c'만 일치시키고 싶습니다.
정확한 일치를 달성하는 방법은 무엇입니까? 감사해요!
답변1
앞이나 뒤에 문자가 없는지 확인하는 더 짧은 vim 표현식
/\(^\|\s\)\@<=-c\>
남성/이하와 동일:
/(^|\s)-c\b
추가 참고사항(Vim):
아마도 Vim의 정규식 중 가장 유용한 부분은 -c\>
"'-c'를 찾는 것입니다. 단, 그 뒤에 문자가 없는 경우에만 해당됩니다." 대부분의 경우 를 사용하여 검색하겠지만 /-c\>
, 완전성을 위해 "-c" 앞에 오는 내용을 확인하는 표현식을 추가했습니다. 표현식은 \(^\|\s\)\@<=
이고 Vim의 정규 표현식 구문이 약간 장황하기 때문에 복잡해 보입니다(그룹화 대괄호와 "or" 파이프를 이스케이프해야 하기 때문입니다). 이 표현은 \(^\|\s\)
"줄의 시작 또는 공백 문자"를 의미합니다. 그 뒤에 넣으면 \@<=
"실제로 일치하지 않고 정규식의 다음 부분 앞에 나타나는지 확인하십시오"를 의미합니다(이것은 검색 및 바꾸기 작업에만 실제로 유용합니다). 사실 이 \@<=
부분은 별로 필요하지 않을 것 같습니다. 생략하고 를 추가하면 더 단축할 수 있습니다 \v
. 이렇게 하면 Vim에게 멋진 구문을 사용하지 않을 것임을 알려줍니다. 그럴 것 같습니다 /\v(^|\s)-c>
.
man/less 등가물에 대한 설명:
훨씬 간단합니다. less (기본 수동 호출기)는 \b
Vim과 동일한 정규식 구문을 사용하며 \>
이스케이프 대괄호나 파이프 문자가 필요하지 않습니다. 줄의 시작 부분이나 공백 문자 바로 뒤에 나타나는 문자열 "-c"를 찾고 그 뒤에 다른 문자가 없는지 확인합니다.
답변2
vim
사용 중
/\(^\|\s\)-c\($\|\s\)
존재하다 less
:
/(^|\s)-c($|\s\)
vim에서 단어 경계를 사용할 수 있지만 isk
옵션이 될 수 있는 다른 항목과도 일치하므로 명시적으로 공백을 찾는 것이 더 안전합니다.