Vim 전역 대체는 한 줄의 모든 경기를 대체하지 않습니다.


12

때때로 나의 전 세계 소질이 한 줄의 모든 경기를 대신하지는 않습니다. 확인으로 대체 할 때 볼 수 있으며 일치하는 항목이 여러 줄인 줄에서 발견되지만 다른 줄로 이동합니다.

전체 파일에서 작동 하는 g또는 gc매개 변수를로 사용합니다 %.

이 파일에서 :

hello hello
hello
hello hello hello
hello

내가 할 경우 %s/hello/goodbye/g내가 얻을

goodbye hello
goodbye
goodbye hello hello
goodbye

.vimrc검색 / 바꾸기에 관한 모든 것은

set hlsearch
set ignorecase
set incsearch

3
실제 사례를 알려 주시고 귀하에게 알려주십시오 vimrc.
romainl

2
다음 과 같이 :echo &gd두 번째 g플래그 를 추가하거나 출력을 완전히 %s/hello/goodbye/gg제거 하면 결과는 무엇이며 어떻게됩니까 g? 의 출력이 :echo &gd이면 끝에 1추가해보십시오 . set nogdefaultvimrc
user9433424

1
좋아! 왜 그런지 모르겠지만 기본적으로 0으로 설정되어 있으므로 set nogdefault말한 것처럼 추가 했으며 지금은 작동합니다. 감사합니다!
Nicolas Scotto Di Perto

답변:


12

귀하 또는 플러그인이 옵션을 활성화했을 수도 있습니다 'gdefault'. 이 옵션 g은 대체를 수행 할 때마다 자동으로 플래그를 추가합니다 .

따라서, 활성화 된 g상태에서 수동으로 플래그 를 추가 'gdefault'하면 마치 2 g와 동일한 효과를 갖는 2 개의 플래그가있는 것과 같습니다. 따라서 Vim은 모든 행에서 처음 나타나는 패턴 만 대체합니다.

기본적으로이 옵션은 비활성화되어 있지만 확실하게하기 위해 vimrc: 끝에 추가 할 수 있습니다 set nogdefault.

또는 플러그인이 옵션을 활성화했을 것으로 의심되는 경우 다음을 사용하여 추적 할 수 있습니다. verb set gd?

또는 패턴의 모든 항목을 대체하려는 경우 g플래그를 추가하지 않고 ( gdefault이미 수행 했으므로 ) 패턴의 첫 번째 항목 만 대체하려는 경우 옵션에 익숙해 질 수 있습니다. 한 줄에 g플래그 를 추가합니다 (2 g플래그는 none과 동일 하기 때문에 ).

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