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
4개의 단일 명령을 연속으로 입력하는 방법입니다. 그러나 방향을 바꾸는 것이 좋습니다.
:28d|16d|9d|5d
번호 매기기를 일정하게 유지합니다.
보다 유연한 방법은 vimscript를 사용하는 것입니다. 한 줄로 압축하면 다음과 같습니다.
:for n in [28,16,9,5] | call deletebufline("%",n,n) | endfor