Vi 검색 범위 및 바꾸기

Vi 검색 범위 및 바꾸기

vi저는 이러한 방법을 사용할 수 없는 Tru64 시스템을 사용하고 있습니다 \1.

다음과 같은 간단한 질문에 대한 답을 찾을 수 없습니다.

검색(범위)을 바꾸기와 연결하는 방법은 무엇입니까? 다음과 비슷해 보이지만 작동하지 않습니다.

:/^group/s/\w$/Test/

관심 있는 분들을 위해 다음과 같이 시도해 보았습니다 \1.

:%s/\(group\s\+\)\w/\1Test/

답변1

\w여기서 주요 문제는 약식 표기법 sum 을 사용하는 것입니다 \s. 편집자라면전통적인구현 (Bill Joy의 원본 소스)인 경우 대부분의 최신 구현에서 기본적으로 설정되는 옵션을 vi설정하고 싶을 수도 있습니다 . 이것은 으로 이루어집니다 .magicvi:set magic


vidos 와 같은 다양한 문자 클래스에 대한 유사한 약어를 \w이해 하지 못합니다 .\svim

에서 교체하려면 vi다음을 사용하세요.

:%s/^\(group[  ][  ]*\)[0-9A-Za-z_]/\1Test/

~에 따르면vim선적 서류 비치, 및 \w에 해당하는 공백 또는 탭 문자입니다(공백과 탭 문자 모두 위에 있음 ).[0-9A-Za-z_]\s[ ]

패턴 E+E대체될 ​​수 있는 표현식입니다 EE*.

\1교체 부품의 교체는 ( vi모든 vi)에서 작동해야 합니다. 그렇지 않은 경우 nvi("new ") 를 시도 vi하거나 설치할 수 있는지 확인하십시오 vim.

원본 버전(적어도 일부 BSD 시스템에 패키지된 경우 vi)에서는 및 등과 같은 "특수 문자"( 및 제외)를 이스케이프해야 합니다. 또는 옵션을 설정할 수 있습니다(최신 구현에서는 이것이 기본값인 경우가 많습니다).traditional-vi^$\*\.magic:set magicvi

위의 교체는 (예를 들어)의 모든 항목을 대체합니다.

group 1

그리고

group Test

시도한 것과 동일한 작업을 수행하는 또 다른 방법은 다음과 같습니다.

:g/^group/s/[0-9A-Za-z_]$/Test/

그렇지 않으면

:g/^group/s/.$/Test/

줄의 마지막 문자에 대해 너무 조심할 필요가 없는 경우.

마지막 것을 교체하고 싶다면단어(마지막 문자뿐만 아니라) 다음을 수행합니다.

:g/^group/s/[^ ]*$/Test/

vi옵션 세트가 없는 전통적인 경우에는 magic다음과 같이 작성해야 할 수도 있습니다.

:g/^group/s/\[^ ]\*$/Test/

관련 정보