Vim / Vi에 커서를 검색 하이라이트 끝으로 이동시키는 명령이 있습니까?


86

Vim / Vi에 선택한 검색 세그먼트 내에서 이동하는 명령이 있습니까?

예를 들어 단어를 검색 할 때 강조 표시된 세그먼트의 끝으로 커서를 이동하는 명령이 있습니까? "FishTaco"라는 단어가 있고 "Fish"의 모든 인스턴스를 검색하고 그 뒤에 무언가를 삽입하고 싶다고 가정합니다. 전역 교체를 수행 할 수 있다는 것을 알고 있지만 몇 개의 비 순차적 인스턴스에서만 변경하려면 어떻게해야합니까?

커서를 현재 강조 표시된 세그먼트의 끝으로 이동하여 작업을 수행하는 것이 편리한 위치를 알 수있었습니다.


3
이 질문에 대한 답변이 아니라 모두를 대체 당신의 궁극적 인 목표 달성 Fish과를 FishTaco, 당신이 할 수있는 :%s/Fish\(Taco\)\@!/&Taco/모든 찾을 것이다, Fish이미 다음에하지 Taco와로 교체 FishTaco. 부정 예측 검색을 일치하는 용어 뒤에 Taco.
Jim Stewart

@JimStewart 왜이 댓글에 답만큼 +1이 많지 않은지 모르겠습니다. 이것은 닌자 레벨 vim입니다.
Still.Tony 2018

답변:


135

다음과 같이 할 수 있습니다.

/Fish/e

/e말은 검색 영역 (대신 기본적으로 첫 번째 문자의 끝 부분에 커서를 토지.


32
+ n 또는 -n 을 추가 하여 끝 앞뒤에 n 개의 커서를 놓을 수 있습니다 .
Nathan Fellman

10
이미 /Fish검색을 완료 한 후에 //e는 Vim 7.4로 끝까지 이동할 수 gn있으며 찾은 결과를 시각적으로 강조 표시하는 데 사용할 수 있습니다.
smathy

@ghbarratt 대답도 살펴보고 강조 표시된 일치에서 커서를 찾는 더 많은 옵션을 확인하십시오.
Nima

82

Fish의 마지막 캐릭터 뒤에 커서를 놓고 싶다면 다음을 사용할 수 있습니다.

/Fish/e+1

커서가 h 뒤에 위치합니다. ( +1커서가 없으면 마지막 문자의 왼쪽으로 끝납니다.)

특히 Fish 다음에 커서를 두는 데 관심이 있지만 "FishTaco"에 나타날 때만 다음 옵션 중 하나를 시도 할 수 있습니다.

당신이 사용할 수있는

/FishTaco/s+4

커서가 Fish와 Taco 사이에있게됩니다. 그만큼/s+4 4 곳 검색어의 시작 후 커서를 배치합니다.

마찬가지로 사용할 수 있습니다.

/FishTaco/e-3

그러면 커서가 마지막 (종료) 문자 왼쪽의 3 개 위치에 배치됩니다.

당신은 또한 사용할 수 있습니다

/FishTaco/b+4 

/b+4으로 처리 되기 때문 입니다 /s+4.


14
좋은 설명이지만 지금은 배고파요.
kenny

28

이미를 검색 한 경우를 /Fish통해 일치의 끝으로 이동하도록 검색을 빠르게 변경할 수 있습니다.이 //e경우 마지막 검색을 반복하지만 e이미 설명 된 수정자를 추가합니다 .


1
// e + number는 내가 찾던 바로 그것입니다! 대박.
arkod

13

/ long-regexp1 \zs long-regexp2 / .. 커서가 \ zs에서 멈 춥니 다 . : help \ zs 참조


12

시각적 선택 o이 끝나면를 사용 하여 선택한 블록의 시작과 끝 사이에서 커서 위치를 전환 할 수 있습니다 . 선택이 라인 방식 일 때 이것은 라인을 토글합니다. 위치가 즉, 커서가 선택 항목의 시작 및 끝 라인으로 이동하지만 시작 또는 종료 문자로는 이동하지 않습니다. 선택이 문자 단위 인 경우 이동도 문자 단위입니다.

당신은 또한 사용할 수 있습니다 `<`>이 다시 설정하거나 선택 범위를 조정하는 데 사용되도록 그러나이, 선택 자체에 영향을 미치는, 시작과 시각적 블록의 끝 사이에 커서를 전환 할 수 있습니다.

편집 : 아, 그러나 검색 강조 표시의 o경우 줄 삽입을 시작 하기 때문에 작동하지 않습니다 . 검색 하이라이트는 시각적 선택과 동일하지 않은 것 같습니다. 죄송합니다. :)


나도 몰랐습니다. 다시 시작하지 않고 선택의 시작 부분을 수정하는 것이 좋습니다. (예 : 너무 빨리 또는 너무 늦게 선택을 시작했습니다.)
Timothée Boucher 2014

9

질문의 "경기 종료시 커서"부분에 이미 답변이 있습니다.

당신은 할 수 있습니다 :%s/Fish/FishTaco/c. 이렇게하면 모든 교체를 확인하거나 거부하고 "경기 종료시 커서"비즈니스 전체를 건너 뛸 수 있습니다.


멋진 팁. 'y'를 입력하면 첫 번째에만 교체를 수행합니다. 각각에 대해 어떻게 확인합니까?
Jordan Parmer

1
그것은 당신이 유형에 대한 다음 경기 및 대기로 이동 y하거나 n그래서 남은 경기가 없을 때까지. 모든 추가 대체를 승인하려면을 입력 a하고 거부 하려면을 입력하십시오 q.
romainl

1
사실 g결승전 이후를 놓치고 /있었기 때문에 내 라인에서 계속되지 않았습니다. 팁 고마워.
Jordan Parmer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.