[vim] Vim yanking 라인 범위

저는 최근에 제가 사용할 수있는 도구에 대한 지식을 확장하기로 결정한 C # 개발자입니다. 제가 배우기로 결정한 첫 번째 도구는 Vi / Vim입니다. 지금까지 모든 것이 순조롭게 진행되었지만 답변을 찾을 수없는 몇 가지 질문이 있습니다.

  1. 여러 줄을 잡아 당기고 싶다고 가정 해 보겠습니다. 여러 가지 방법이 있다는 것을 알고 있지만 줄 번호로하고 싶습니다. 대체 명령이 작동하는 방식과 비슷할 것이라고 생각했습니다 81,91y. 이를 수행하는 방법이 있습니까?

  2. g일반 모드 의 명령에 대해 약간 혼란 스럽습니다 . 무수히 많은 일을하는 것 같고 g 명령이 핵심에서 수행하는 작업을 실제로 결정할 수 없습니다. 나는 그것이 모션 명령인지 아니면 일반 모드를 통해 실행되는 다른 명령에 대한 일종의 “모두 잡기”인지 혼란 스럽습니다. 누군가 이것을 설명하거나 g명령에 대한 좋은 설명을 제공하는 참조를 알려줄 수 있습니까?



답변

Yank 라인 81-91

:81,91y<enter>

손가락이 :,키 를 찾는 것을 좋아하지 않으면 이 방법도 작동합니다 (81 행으로 이동하고 11 행을 잡아 당김).

81gg11yy

나의 유일한 용도는 g입니다 5gg. 5 번째 줄로 이동합니다. 22gg: 22 번째 줄. jimbo가 말했듯이 실제로는 다른 명령의 수정 자일뿐입니다.

완전성을 위해 ( http://vim.wikia.com/wiki/Power_of_g ) g명령 모드에서 작동 하는 방법을 많이 설명 합니다.


답변

‘t’를 사용하여 현재 줄을 현재 커서 위치로 복사 할 수도 있습니다.

:81,91t.<enter>

그러면 커서가있는 줄 아래에 81-91 줄이 붙여 넣어집니다.

나는 VIM에 대한 훌륭한 자료 인 http://vimcasts.org 에서 이것을 배웠다 .


답변

또한 vim의 상대 줄 번호 옵션을 사용하는 것을 좋아합니다. 즉, 다음과 같이 입력 할 수 있습니다.

:-10,-7ya a

텍스트를 명명 된 버퍼로 잡아 당기려면 a.

NB A를 지정하면 버퍼 a의 현재 내용에 잡아 당기는 내용이 추가됩니다.

유사한 명령을 사용하여 텍스트 블록을 복사하고 텍스트 블록을 이동할 수도 있다는 것을 잊지 마십시오.

:-10,-7co .

10 행 위의 4 행 텍스트를 현재 행 아래로 복사하는 것을 의미합니다.

:-10,-7mo .

텍스트의 네 줄을 현재 줄 아래로 10 줄 위로 이동하는 것을 의미합니다.


답변

G이 카운트 값과 함께 않다면 명령은 특정 행 번호로 이동합니다. 81G81 번 줄에 연결합니다.

y명령은 같은 운동과 결합 될 수있다 G. 따라서 91 행까지 모든 것을 잡아 당기려면 y91G.

함께하면 다음을 얻을 수 있습니다.

81Gy91G

81 번 줄로 이동 한 다음 91 번 줄로 이동하면서 잡아 당기십시오.


답변

g그 자체로는 아무것도하지 않습니다. 그것은 일종의 관련없는 명령을 보유하는 몇 가지 메타 명령 중 하나입니다.

z 또 다른 명령입니다.


답변

Vim은 :help index다음 g과 같이 설명 합니다.

|g|             g{char}            extended commands, see |g| below

:help g목록을 보려면 아래로 스크롤 (또는 )합니다.


답변

가장 좋은 해결책은 v를 눌러 “시각적 모드”로 들어가는 것입니다. 그리고 선을 선택한 후 y를 눌러 복사하십시오. 그런 다음 p를 눌러 복사 한 줄을 붙여 넣습니다.