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.

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

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.