[vim] vim에서 현재 줄 아래의 줄을 삭제하는 방법은 무엇입니까?

현재 줄 바로 아래에있는 한 줄 (또는 여러 줄)을 삭제하는 명령이 있습니까? 현재 저는 jdd다음과 같이하고 있습니다.
그리고 .필요에 따라 반복합니다. 이 모든 것을 결합하는 명령이 있습니까?

업데이트 : 내가 그러한 명령을 갖고 싶은 이유는 현재 위치에서 멀어지고 싶지 않지만 아래 줄을 삭제할 수 있기 때문입니다.



답변

delete ex 명령은 잘 작동합니다.

:+,$d

현재 +1부터 끝 ($)까지 모든 줄이 삭제됩니다.

다음이 추적 범위가 작동 할 선, 삭제 +1,+2또는 속기+,+2

:+,+2d

@ib가 언급했듯이 :delete또는 :d명령은 커서를 삭제 된 텍스트 옆의 줄 시작 부분으로 이동합니다. ( nostartofline세트로도). 이를 극복하기 위해 ``정상 모드 명령을 실행할 수 있습니다 . ``마지막 점프 이전의 정확한 위치로 다시 점프합니다 :d. 이 경우에는 명령입니다. 우리의 명령은 지금

:+,+2denter``

또는 하나의 전 명령으로

:+,+2d|norm! ``

이 작업을 더 쉽게하기 위해이 모든 것을 명령으로 마무리합니다.

command! -count=1 -register D :+,+<count>d <reg><bar>norm! ``

이제 다음 3 줄을 삭제합니다.

:3D

이 명령은 또한 {reg}좋아요 :delete:yank할 수 있습니다. 따라서 다음 4 줄을 레지스터로 삭제하면 다음과 a같습니다.

:4D a

자세한 내용은

:h :d
:h :command
:h :command-register
:h :command-count
:h ``


답변

dG작동합니다.

즉, 현재 커서에서 파일 끝까지 모든 행을 삭제합니다.


답변

현재 행 아래의 모든 행이 삭제됩니다.

jdG

불행히도 삭제 후 커서가 현재 줄의 시작 부분으로 이동합니다.


답변

음, 간단하게 xxdd 명령을 사용할 수 있습니다. 대부분의 경우 편집중인 스크립트의 크기를 알고 있습니다 (적어도 아이디어는 있음). 따라서 아래와 같은 명령은 일반적으로 충분합니다.

  • 99dd
  • 999dd는 커서 위치에서 시작하는 999 줄을 제거합니다.
  • 9999dd
  • 매우 긴 스크립트의 경우 99999dd;)


답변

다른 솔루션은 유익하지만 매크로를 사용하는 것이 더 간단하다고 생각합니다.

qq (녹음 시작)

jddk (아래로 내려 가서 줄을 삭제하고 위로 돌아가십시오. 즉, 원하는 작업)

q (녹음 종료)

이제 @q커서를 현재 위치에 유지하면서이 작업을 수행 할 수 있습니다 . 5@q커서 아래 5 줄을 삭제 하는 것과 같은 작업을 수행 할 수도 있습니다 .

마지막으로 작업을 두 번 이상 반복하는 @@경우 처음 실행 한 후에 입력 할 수 있습니다 @q(이 경우 마지막으로 사용 된 매크로가 반복됨 q).


답변

이것은 마크를위한 일입니다!

시험 maj20dd`a

ma파일 별 마크 ‘a’ j20dd를 설정하고 원하는 삭제 (이 경우 20 줄) `a를 수행하고 마크의 위치 (줄 및 열)로 복원합니다.

분명히이 패턴은 마크로 돌아 가기 전에 원하는 모든 작업을 수행하도록 확장 할 수 있습니다. 당신이 사용하는 경우 mA(또는 다른 대문자) 마크는 실제로 당신도 편집 다른 곳에서 반환하기 전에, 그래서 파일에서 고유해야합니다. 자주 사용하는 경우 위에서 제안한대로 매크로로 만들 수 있습니다.


답변

삭제할 줄 수를 입력 할 수 j 20 dd k있습니다..