2013-06-07 2 views
3

저는 일반적으로 Vim에서 자르기/붙여 넣기를 위해 마크를 사용합니다. Vim - 마킹을 할 때 커서가 움직이지 않도록하십시오.

, 나는 다음을 수행 라인 4와 12 사이에있는 텍스트를 꺼낼하려면

  1. 이동 커서가 12
  2. 을 일렬로 X
  3. 이동 커서라는 표시를 4
  4. 유형 mx을 일렬로
  5. y'x는 이렇게 다음 커서 이동 라인 4

(12) 사이의 텍스트를 꺼낼 라인 # 4로 돌아가십시오.

어디 까지나 커서를 그대로 유지할 수있는 방법이 있습니까? 사람이 같은 일을 할 수있는 더 좋은 방법이 있다면

, 즉 ...도 사전에

덕분에 좋은 것!


업데이트 :

나는 나에게 하나 개의 행복 캠프를하고 매핑을 만들 FDinoff의 답변을 사용 :

nnoremap YY y'x<C-O> 

이 후, 마크라는 이름의 X 커서에서 양키스 커서를 원래 위치로 되돌립니다.

이것은 이미 톤의 시간을 절약했습니다. 다시 한 번 감사드립니다!

+3

문서에서이 작업을 수행하는 확실한 방법은 보이지 않지만 뒤로 뛰어 오려면 홱 잡아 당긴 후 Ctrl-O를 누르는 것으로 충분합니다 12 번 줄에? – andrewdotn

+0

@andrewdotn - 멋진 시작 (그리고 아마도 충분한 해결책) ... 그것은 매핑을 추가 한 후에 특히 유용 할 것입니다. 감사! (일부 포인트를 원하면 답을 자유롭게하십시오.) – jahroy

답변

9

4 번 줄로 건너 뛰는 이유는 뒤로 움직이는 동작으로 홱 잡아 당김을 사용하기 때문입니다.

      *y* *yank* 
["x]y{motion}  Yank {motion} text [into register x]. When no 
      characters are to be yanked (e.g., "y0" in column 1), 
      this is an error when 'cpoptions' includes the 'E' 
      flag. 

해당 동작은 'x이며 이는 x 표시로 점프합니다. 커서는 yanked 파트의 시작 부분으로 이동합니다.이 경우 12 행에서부터 yanking 한 4 행입니다.

하지만 할 수있는 일.

  1. ex 명령 줄 모드가 yank 인 경우 range을 사용하십시오. 범위는 . (현재 행)에서 'x (x 표시)입니다. 범위가 거꾸로되어 있으면 다른 방향을 의미하는지 물어볼 것입니다. 그러면 커서가 움직이지 않습니다. :.,'xy

  2. 또는 <C-o>을 사용하면 마지막으로 뛰어 내린 곳으로 점프합니다. (의견에 언급되어 있습니다.)

  3. 또는 '] 또는 `]을 사용할 수 있습니다. 이 명령은 마지막으로 잡아 먹은 텍스트의 마지막 문자를 점프합니다.다시와

+0

고맙습니다. 나는 설명과 대안들에 감사한다. – jahroy

+0

나는 이것이 '이유'라고 생각하지 않는다. 왜냐하면 대부분의 야크 동작은 커서를 움직이지 않기 때문이다. 예 : yj yl y}. 실제로 yanks * 및 *가 yf3 /과 같은 복잡한 동작에 도움이되는 동작을 수행하는 명령을 검색하는 동안이 게시물을 발견했습니다. 그런 명령을 찾지 못했 니? –

+1

@MichaelScheper yank는 yanked 섹션의 시작 부분에 커서를 놓습니다. 모든 예에서 커서는 이미 yanked 섹션의 시작 부분에있었습니다. 내 머리 꼭대기에서 떨어져서, 나는 커서를 홱 잡아 당겨 진 부분의 끝 부분에 놓는 방법을 모른다. – FDinoff

3

이동 :

:h `` 
:h CTRL-O 
1

방법에 대한 y12G 자세한 도움말을 참조하십시오 `` 또는

<c-o>?
이것은 현재 위치 (4 번 줄)에서 12 번 라인으로 홱 잡아 당길 것입니다.

+0

그게 효과가 있지만이 워크 플로는 일반적으로 얼마나 많은 라인을 뽑을 지 모를 때 사용됩니다. 방금 시나리오 4와 12를 사용하여 시나리오를 설명했습니다. 실생활에서 4와 12는 "파일을 탐색하여 선택한 임의의 임의의 행 번호 _"로 대체해야합니다. – jahroy

관련 문제