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있습니다..
You can define a little function that does exactly what you described: delete the next n
lines below the current line and restore initial cursor position.
function! DeleteNextLines(n, reg)
let l = line('.')
let m = min([a:n, line('$')-l])
if m > 0
let c = col('.')
exe '+,+'.m 'd' a:reg
call cursor(l, c)
endif
endfunction
Also, you can define a command that accepts the count of lines below to delete (one, by default) and the register name to use as an optional argument (just as :delete
command).
:command! -range=1 -register -bar D call DeleteNextLines(<count>, <q-reg>)
Additionally you could define a mapping for running :D
, if it's necessary.
참고URL : https://stackoverflow.com/questions/3624345/how-to-delete-lines-below-current-line-in-vim
'UFO ET IT' 카테고리의 다른 글
Android ListView setSelection ()이 작동하지 않는 것 같습니다. (0) | 2020.11.15 |
---|---|
C 프로그램을 사용하여 컴퓨터의 MAC 주소를 얻는 방법은 무엇입니까? (0) | 2020.11.15 |
오늘, 이번 주, 이번 달에서 레코드 선택 php mysql (0) | 2020.11.15 |
자바 스크립트로 HTML 엔티티 인코딩 (0) | 2020.11.15 |
프로그래밍 방식으로 다른 뷰 컨트롤러 / 장면으로 이동 (0) | 2020.11.15 |