2013-08-22 1 views
0

vim에서 :g 명령을 사용하고 있습니다. :g에 의해 발견 된 행에 직접적으로 (점차적으로 :cn과 유사하게) 점프하는 방법이 있습니까?vim에서 얻은 회선을 통해 순환 : g

:h :g에는 이러한 기능이 포함되어 있지 않은 것으로 보입니다.

+0

': % s/pattern/replacement/gc'를 사용하십시오. ': g'이 일자리를 찾기에는 잘못된 도구 인 것 같습니다. – romainl

답변

3

:g으로 무엇을 했느냐에 따라 다릅니다.

:g 명령이 일치 패턴을 변경하지 않은 경우 n을 누르면 다음 일치하는 줄로 이동할 수 있습니다.

하지만 패턴을 변경 한 경우 :g/foo/d 또는 :g/foo/s/foo/bar/g을 입력 했으므로 :g 명령을 실행 한 후에는 해당 줄이 표시되지 않습니다. 다시 그 라인에 도달 할 수있는 방법이 없습니다.

+0

': g'의 기본 동작을 사용하고''p''를 사용하고 인쇄 된 줄을 순환시키고 싶습니까? (두 번째 줄이 될 것입니다) – FDinoff

2

일반적으로 패턴 일치로 점프하는 일반적인 방법은 전역 명령이 아닌 일반 검색을 사용하는 것입니다. 이것은 연속 일치의 경우 /<pattern>n입니다.

글로벌 명령 :g은 행의 연속되지 않은 행 에서 다른 명령을 실행하는 데 사용됩니다. 인접한 행 집합의 경우 범위가 충분합니다. 예 : :1,5<command>.

그러나 어떤 이유에서든 글로벌 명령을 사용해야하거나 레코드 만 필요한 경우 :g을 사용하여 원하는 작업을 수행 할 수있는 방법이 있습니다. 빔의 도움에서

:

When using "global" in Ex mode, a special case is using ":visual" as a 
command. This will move to a matching line, go to Normal mode to let you 
execute commands there until you use |Q| to return to Ex mode. This will be 
repeated for each matching line. While doing this you cannot use ":global". 
To abort this type CTRL-C twice. 

은 전체 기사, :h multi-repeat을 볼 수 있습니다.

그래서, 단계적으로, 그것은 다음과 같습니다

  • 는 전 모드 (보도를 Q)를 입력합니다.

    이것은 명령 줄 모드와 비슷하지만 명령 실행 후 다시 정상 모드로 돌아 가지 않으며 앞에 :을 입력 할 필요가 없습니다. 여기에서 정상 모드로 돌아가려면 :visual이 사용됩니다.

  • 하위 명령을 실행하여 글로벌 명령을 실행하십시오. 이것은 :g/<pattern>/visual입니다.

    그러면 경기마다 정상 모드로 전환됩니다. 매번 vim의 모든 능력을 사용하여 그 경기에서 원하는 것을 할 수 있으며, 끝나면 ex 모드로 돌아갑니다 (Q 다시 누르기)는 다음 경기에서 계속됩니다.

  • 마지막 경기가 끝나면 다시 ex 모드로 남게됩니다. :visual을 입력하면 정상 모드로 돌아갑니다.

0

당신이 원하는에 따라, 당신은 단순히 quickfix 목록에 일치하는 라인을 넣어 것이다, :grep 또는 :vimgrep 대신 :g를 사용할 수 있습니다. (위치 목록을 채우기 위해 l 개의 명령 변형을 사용하십시오).

관련 문제