커맨드 라인 모드에서 상대 라인 번호를 어떻게 사용합니까?


16

최근 Practical Vim 에서 커서를 현재 위치에서 이동하지 않고도 행 블록을 복사하거나 이동하는 방법을 배웠습니다 . 이것은 명령 행 모드에서 수행됩니다. 예 :

:123,133m.  # moves lines from 123 to 133 below the cursor position.

내가 좋아하는 동안, 특히 파일에 너무 많은 줄이있을 때 긴 줄 번호를 입력하는 것은 고통입니다.

때때로, 움직일 줄은 커서 근처에 있습니다 (그러나 커서를 움직이고 싶지 않습니다. 우리가 일반 모드에서하는 것과 비슷한 상대 숫자를 사용할 수 있다면 좋을 것입니다. 말하는 것 같아

현재 줄 위로 10 줄인 5 줄을 여기로 이동

간단히 말해서 커맨드 라인 모드에서 상대 숫자를 사용하는 방법 (일반 모드와 유사)?

답변:


23

라인이 현재 라인의 15-10 라인에 걸쳐 있다고 가정하면 상대 라인 번호를 사용하여 요청한 것을 얻을 수 있습니다.

:-10,-15m.

안타깝게도 뒤로 범위를 지정할 때 Vim은 이것이 실제로 원하는 것인지 확인하도록 요청합니다. 확인 단계를 피하려면 silent명령 전에 입력 하거나 전달 범위를 지정하십시오.

:-15,-10m.

예상 +대로 현재 행 아래의 행을 참조하는 데 사용할 수 있습니다.

자세한 도움말은 다음에서 찾을 수 있습니다.

:help cmdline-ranges

1
그러나 한 번도이 기능을 사용한 적이 없습니다. 그렇습니다 15k d5j 10j P.
joeytwiddle

차이점은 15k, 5j는 명령 모드에서 작동하고 대답에 설명 된 것은 삽입 모드입니다. 따라서 모드를 기반으로 적절한 것을 선택할 수 있습니다. 삽입 모드의 명령은 일반적으로 다른 명령을 실행하기위한 선택 기준입니다.
Soundararajan '

12

당신은 당신의 범위에서 하드 숫자를 사용할 수 있습니다 :

:200,300command

또는 상대 숫자 :

:-27,+46command

또는 수동 표시 :

:'a,'bcommand

또는 자동 마크 :

:'[,'>command

또는 검색 :

:?foo?,/bar/command

또는 줄 바꿈 :

:.,$command

또는 위의 트릭의 조합 :

:?foo?,+46command
:'a,$command
...

3

상대 주소 지정을 사용할 수 있습니다 (예 : .-10,.+3Ex 명령 인 cp와 함께 . :help :range.

또는 LineJuggler 플러그인을 살펴보십시오 . 여러 줄의 짧은 매핑을 제공하여 줄을 이동하거나 복제 할 수 있으며 이러한 모든 매핑은 상대적인 선 오프셋을로 사용 [count]합니다.

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