vi
저는 이러한 방법을 사용할 수 없는 Tru64 시스템을 사용하고 있습니다 \1
.
다음과 같은 간단한 질문에 대한 답을 찾을 수 없습니다.
검색(범위)을 바꾸기와 연결하는 방법은 무엇입니까? 다음과 비슷해 보이지만 작동하지 않습니다.
:/^group/s/\w$/Test/
관심 있는 분들을 위해 다음과 같이 시도해 보았습니다 \1
.
:%s/\(group\s\+\)\w/\1Test/
답변1
\w
여기서 주요 문제는 약식 표기법 sum 을 사용하는 것입니다 \s
. 편집자라면전통적인구현 (Bill Joy의 원본 소스)인 경우 대부분의 최신 구현에서 기본적으로 설정되는 옵션을 vi
설정하고 싶을 수도 있습니다 . 이것은 으로 이루어집니다 .magic
vi
:set magic
vi
dos 와 같은 다양한 문자 클래스에 대한 유사한 약어를 \w
이해 하지 못합니다 .\s
vim
에서 교체하려면 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 magic
vi
위의 교체는 (예를 들어)의 모든 항목을 대체합니다.
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/