Vim : 커서를 마지막 위치로 이동


251

(g) Vim에서 커서를 이전 위치로 이동시킬 수 있습니까 (정상 모드에서)? 이전 커서 위치 목록에서 앞뒤로 순환하는 것이 이상적입니다. 그러나 마지막 위치로 전환하는 것만으로도 충분합니다 ( cd -디렉토리가있는 bash와 같은 것 ).

다음은 약간의 데모입니다.

line |1| <- cursor position
line 2
line 3
line 4

그리고 내가 2j했다고 가정 해보 십시오.

line 1
line 2
line |3| <- cursor position
line 4

이제 2k첫 번째 위치와 이전 위치로 돌아 가기 위해 (명백하지 않은) 무언가를 누르 려고합니다.

답변:


409

가장 빠른 방법은 다음 중 하나를 누르는 것입니다.

''

(두 아포스트로피) 또는 :

``

(두 백틱). 차이점은 백틱이 줄의 동일한 위치로 가고 아포스트로피가 줄의 시작으로가는 것입니다. 영국 키보드에서 아포스트로피는 더 접근하기 쉽기 때문에 그 키보드를 사용하는 경향이 있습니다. 이와 같은 유용한 마크가 많이 있습니다 :help mark-motions.

다른 모션 ( 2j생각 하지 않을 것)에는 여러 모션간에 앞뒤로 이동할 수있는 점프 목록도 있습니다. CtrlO그리고 CtrlI이 탐색을 수행하지만, 참조 :help jump-motions자세한 내용은.


3
실제로 그 중 어느 것도 내가 기대하는 것과 똑같이 작동하지 않지만 사용할 수있는 것은 없습니다.
Idan K

1
@ Idan K-``(double backtick)는 어떻게 당신이 원하는 것을 정확하게 제공하지 않습니까? ( "역사"측면 제외).
Dan

3
@ Dan : 위의 예제에서 시도하면이 동작을 볼 수 있습니다 .1 행에 서서 j두 번 연속으로 누른 다음 (현재 3 행에 있습니다) 이중 백틱을 누르면 1 행에 도달합니다. 그것은 라인 2로 이동합니다.
Idan K

2
나는 당신이 이동하거나 (2j 또는 무언가), 편집하거나 텍스트를 수정하기 위해 조치를 취한 다음 ''를 사용하여 이전 위치로 되돌아 가야한다고 생각합니다. "2j"를 사용하는 것은 논리적이지 않으며 아무 것도하지 않고 이전 위치로 돌아갑니다
Asenar

8
@IdanK 점프리스트는 실제 "점프"를 사용할 때만 업데이트됩니다 (즉, 이전 커서 위치가 기록됩니다) i j k l. 이것은 움직임 이외의 다른 모션 명령 입니다. (도움말 문서의 전체 목록은 "'"', "`", "G", "/", "?", n", "N", "%", "(", ")", "[[", "]]", "{", "}", ":s", ":tag", "L", "M", H" and the commands that start editing a new file입니다.) 따라서 아니요, "실행 취소" 2j또는 유사하지는 않지만 거의 모든 다른 항목에 적용됩니다. 이 의미가 있기 때문에 수 2j등을. 이미 간단한 반전 ( 2k, 등)이 있지만 다른 것들은 그렇지 않습니다.
Kyle Strand

61

이전 편집 위치 목록에서 g;g,을 사용 하여 앞뒤로 이동할 수도 있습니다 .

미국 이외의 키보드

스위스 및 독일어 키보드 레이아웃에서 입력하기가 ;불편하면 Shift키를 사용해야합니다 . 따라서 다음 g-에서 더 편리한 별칭으로 정의 g;했습니다 $MYVIMRC.

" Map g- as an alias for g;
nnoremap g- g;

나는 이것을 많이 좋아하지만 한 파일의 변경 사항 만 건너 뛸 것입니다. 버퍼 1을 편집 한 다음 버퍼 2를 편집하면 버퍼 1로 되돌아 가지 않습니다.
thouliha

39

DrAl의 답변에 대한 문제를 아무도 찾지 못했 습니까? ''또는 ``이 게시물의 원래 문제가 해결되지 않습니다! 이 두 명령은 2j적어도 나와 같은 일부 커서 이동에는 작동하지 않습니다 . 초보자가 더 혼란 스러울 수 있습니다.

''또는 의 동작 ``CtrlI/ 또는 CtrlO점프 목록을 기반으로합니다. 은 2j그래서 이러한 명령하지 않습니다 작업 점프 목록에 위치 변경 내용을 저장하지 않습니다 2j.

''또는 ``마지막 위치와 현재 위치 사이를 전환하십시오. CtrlICtrlO점프 목록의 역사를 통해 작동합니다.

g;그리고 g,매우 자주 사용되는 편집 위치를 통해 이동합니다.


1
이것을 지적 해 주셔서 감사합니다! 2j그렇다면 다음 과 같은 경우에 무엇이 효과가 있을까요?

33

도움말에서 바로 (: help jump) :

: ju [mps] 모션리스트가 아닌 점프리스트를 인쇄합니다. {not in Vi} {+ jumplist | 없이는 사용할 수 없습니다 | 특색}

                          *jumplist*

점프는 점프 목록에 기억됩니다. CTRL-O 및 CTRL-I 명령을 사용하면 이전 점프 전에 커서 위치로 이동했다가 다시 돌아갈 수 있습니다. 따라서 목록을 위아래로 이동할 수 있습니다. 각 창마다 별도의 점프 목록이 있습니다. 최대 항목 수는 100으로 고정되어 있습니다. {+ jumplist | 없이는 사용할 수 없습니다. 특색}

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