vim에서 검색하기 전의 위치로 돌아가려면 어떻게해야합니까?


258

vim에서의 프로그래밍 나는 종종 무언가를 검색하고, 잡아 당기고, 내가 있던 곳으로 돌아가서 삽입하고 수정합니다.

문제는 내가 검색하고 찾은 후에 내가있는 곳으로 돌아가는 길을 수동으로 찾아야한다는 것입니다.

마지막 검색을 시작했을 때의 위치로 자동 이동하는 방법이 있습니까?


답변:


393

Ctrl+ O이전 위치로 이동합니다. 검색하기 전에 위치를 모릅니다.

편집 : 또한 `.마지막으로 변경 한 내용으로 이동합니다.


CTRL + O를 충분히 길게 누르면 이전에 열린 파일을 다시 가져 오기 시작합니다.
Mark Biek

1
Ctrl + O도 선호하는 방법입니다. 나는 그것을 끊임없이 사용하고 다른 편집자들이 그 행동을 복제하기를 바랍니다.

45
예, CTRL-O와 CTRL-I는 당신이 있었던 곳을 앞뒤로 안내하는 것 같습니다.
Edward Tanguay

8
태그를 사용하여 Ctrl + T를 사용하는 경우에만 되돌아갑니다. 태그를 사용하지 않고 검색 한 경우 Ctrl + T를 사용하면 마지막 태그
Nathan Fellman

1
나는 vía로 점프 :70한 다음을 한 번 :100누르면 70 행이 아닌ctrl+o 원래 위치로 되돌아갑니다. :(
WhyNotHugo

91

사용은 ``당신이 검색 이전에 있던 정확한 위치로 다시 이동 / 점프, 또는 ''당신이 검색 이전에 있던 라인의 시작으로 다시 이동 / 뛰어 올랐다.


4
첫 번째 경기 중일 때만 작동합니다. n후속 경기를 시작하면 시작한 곳으로 건너 뛰지 않습니다.
Kris

검색하고 변경하면 어떻게됩니까?
Costa

1
당신은 또한 사용할 수 있습니다 g;그리고 g,그것은 이전 / 다음 변화의 위치로 이동합니다.
goetzc

39

나는 항상 마크를 설정하여 수행했습니다.

  1. 명령 모드에서 m[letter]를 누르십시오 . 예를 들어, 마크 식별자로 ama사용하여 현재 줄에 마크를 설정합니다 .

  2. 마크로 돌아가려면 '[letter]를 누르십시오 . 예를 들어, 'a1 단계에서 설정 한 행 표시로 돌아갑니다. 행을 표시 한 행의 열 위치로 돌아가 려면 `a( back-tick [letter] )를 사용하십시오.

현재 설정된 모든 표시를 보려면을 입력하십시오 :marks.


약간 관련이없는 메모에서 방금 마크에 대한 또 다른 멋진 것을 발견했습니다.

를 수행 하여 마크 b 로 점프한다고 가정 해 봅시다 mb. Vim은 자동으로 마크 '(작은 따옴표)를 마크 b로 점프하기 전에 어느 라인에 있든지 설정합니다 .

'b, 해당 마크로 이동 한 다음 ''(2 개의 작은 따옴표)를 수행하여 이전 위치로 되돌아 갈 수 있습니다.

:marks명령을 사용하여 실수로 이것을 발견했습니다 . 모든 마크 목록이 표시됩니다.


6
운 좋게도 vim이 특정 위치를 특별하게 추적하고``, ^ O 등으로 접근 할 수 있기 때문에 마크가 종종 불필요합니다.
aehlke

마크는 단지 그것이 설정된 라인의 시작 부분으로 나를 데려가는 것 같습니다. ) :
Fzs2

1
@HermannIngjaldsson 지금까지 이것을 알아 냈을 수도 있지만, '를 사용하면 표시된 줄로 이동하지만`는 정확한 위치로 이동합니다.
azmr

38

당신은 정말로 :help jumplist이것을 잘 읽어야 합니다.


이 답변이 가장 마음에 듭니다. 많은 정보가 있습니다. 대부분의 사람들이 알지 못하도록 도와줍니다 (그리고 최근까지는 알지 못했습니다)
Christian Stewart

1
대단한 글입니다! 이것은 매우 도움이됩니다. 최근에 있었던 장소를 순환하려면 <Co>와 <Ci>를 사용하십시오. 기본적으로 버퍼에서 작동
코스타

29

CTRL+O그리고 CTRL+I, 다시 앞으로 점프합니다.


7

가장 간단한 방법은로 마크를 설정 한 m[letter]다음'[letter]


vim 팁을 검색 할 때 만나게되어 반갑습니다. 더 쉽고 자동으로 앞뒤로 이동하기 때문에 ctrl-i와 함께 ctrl-o를 더 많이 사용했습니다.
MattK

7

나는 이것을 사용한다 :

nnoremap / ms/
nnoremap ? ms?

그럼 사용하여 뭔가를 검색하는 경우 /또는 ?I는 신속하게 돌아갈 수 있습니다 `s. 당신은 당신이 s원하는 어떤 문자로 문자 를 바꿀 수 있습니다.


여기서주의 할 점은 NerdTree와 같은 창 m에서 마크 이외의 것으로 정의 된 창에서 검색을 중단한다는 것입니다 . NerdTree의 경우 메뉴입니다.
Kris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.