강조 표시된 문자열을 선택적으로 변경하는 방법은 무엇입니까?


11

검색하여 변경하려는 문자열을 강조 표시했습니다. 이제 강조 표시된 텍스트 만 바꾸고 싶습니다. n검색 문자열의 다음 인스턴스로 진행하는 데 사용 하고 있습니다. 나는 내가 할 수 있다고 생각 ciw했지만 강조 표시된 텍스트뿐만 아니라 전체 단어가 변경되었습니다.

익숙 :%s/old/new/g하지만 모든 인스턴스를 변경하고 싶지 않습니다. 대신 커서를 각 인스턴스로 이동 한 다음 변경 여부를 결정하려고합니다.

답변:


16

gn모션을 사용하여 현재 검색 일치를 편집하십시오. 다음 예제는 현재 일치 항목을 "FooBar"로 변경합니다.

cgnFooBar

이 기술의 큰 부분은을 통해 변경을 반복 할 수 있다는 것 .입니다. 다음 일치가 .반복 하는 데 사용할 수있는 것과 같은 방식으로 변경된다고 가정합니다 . 또는를 통해 몇 개의 일치 항목을 건너 뛰고 n를 사용하십시오 ..

Vimcasts 는이 문제에 대한 좋은 에피소드를 가지고 있습니다 : gn을 사용하여 검색 매치에서 작동

자세한 내용은 다음을 참조하십시오.

:h gn

이것은 다른 장소에서 사용해야하는 다른 교체 문자열이있을 때가는 방법입니다. 에 의해 호출되는 것처럼 보이는 시각적 모드의 뉘앙스에 대해 잘 모르겠 gn으므로 다음과 같이 방금 발견 한 비슷한 방법이 있습니다.c//e<CR>FooBar<Esc>//<CR>
Jeff

모든 선택 / 일치를 한 번에 변경하는 방법이 있습니까? 기본적으로 리팩토링?
Geremia

@Geremia는, 그래, :%s/oldtext/newstuff/g모든 일치 변경됩니다 oldtext에를 newstuff.
zundarz

@zundarz 나는 정규 표현식을하고 싶지 않지만 변수 이름 만 바꿉니다. .여러 번 누르는 대신 :%norm .( source )를 사용할 수 있습니다 .
Geremia

7

당신은 이미있는 단어를 검색 한 경우 /word?word.

검색어 ( )를 비워 두면 :%s//newword/gc이전에 검색했던 단어를 (으)로 바꿀 수 있습니다 .newwords//..

c플래그는 모든 변화가 눌러, 확인해야한다고 말한다 y예 또는 n아니오를 위해.

:help :s_flagsconfirm 플래그 에 대한 자세한 정보를보십시오.


1
난 당신이 도움보고했다 알아,하지만 당신은뿐만 아니라 명시 적으로 당신이 눌러 수도 있습니다 말할 수있는 l, aq(또는 <Esc>확인주기를 마무리하기 위해 다양한 방법을).
Jeff

2

방법 # 1

gngN매핑을 활용하여 원하는 것을 달성 할 수 있습니다. gn마지막으로 사용한 검색어를 검색하여 시각적으로 일치 항목을 선택합니다. gN뒤로 검색한다는 점을 제외하고는 정확히 동일한 작업을 수행합니다. 등의 연산자와 결합하면 c운영자가 예를 들어, 경기에 적용됩니다, 마지막 검색 문자열이 "foo는"이며 입력하면 cgn, 그것은 "foo는"가 다음에 나오는 경우를 앞으로 검색을 삭제합니다 대체 텍스트를 입력하려면 삽입 모드로 전환하십시오.

이에 대한 자세한 내용은 :help gn및을 참조하십시오 :help gN.

방법 # 2

플래그 :substitute와 함께 명령을 사용할 수 있습니다 c. 각 교체를 확인하라는 메시지가 표시됩니다. 예를 들어, 전체 파일에서 foo를 bar로 바꾸고 싶지만 각 교체를 확인하고 싶다고 가정 해보십시오.

:%s/foo/bar/gc

이에 대한 자세한 내용은 다음 도움말 항목을 참조하십시오 :help :s_flags, :help cmdline-ranges하고 :help :substitute.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.