vim 편집기에 50줄이 있고 단일 명령으로 특정 줄(5,9,16,28)을 삭제해야 한다고 가정해 보겠습니다.
답변1
한 번에 여러 행을 작업하는 것은 불편하지만 다음과 같이 할 수 있습니다.
:g/\v%5l|%9l|%16l|%28l/d
:g/.../
- 패턴이 일치하는 라인을 기준으로 동작합니다/.../
.\v
-환상적이다, 정규식에서 특수 문자의 이스케이프를 줄입니다.%<num>l
- 줄 번호와 일치합니다<num>
(따라서%5l|%9l|...
5번 줄이나 9번 줄과 일치하거나 ....).:d
행을 삭제합니다.
행 또는 행 범위인 경우 :<num>d
or를 수행할 수 있습니다 :<start>,<end>d
(예를 들어 :5d
다섯 번째 행에 대해 또는 :9,16d
행 9에서 16행(포함)까지의 행 범위에 대해).
답변2
:5d|9d|16d|28d
이것이 네 개의 단일 명령을 정렬하는 방법입니다. 그러나 상황을 바꾸는 것이 더 좋습니다.
:28d|16d|9d|5d
번호 매기기를 변경하지 않고 그대로 둡니다.
보다 유연한 방법은 vimscript를 사용하는 것입니다. 한 줄로 압축하면 다음과 같습니다.
:for n in [28,16,9,5] | call deletebufline("%",n,n) | endfor