vim 편집기에서 특정 줄을 삭제하는 방법

vim 편집기에서 특정 줄을 삭제하는 방법

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>dor를 수행할 수 있습니다 :<start>,<end>d(예: :5d다섯 번째 줄 또는 :9,16d9번째부터 16번째 줄(포함)까지의 줄 범위).

답변2

:5d|9d|16d|28d

4개의 단일 명령을 연속으로 입력하는 방법입니다. 그러나 방향을 바꾸는 것이 좋습니다.

:28d|16d|9d|5d

번호 매기기를 일정하게 유지합니다.


보다 유연한 방법은 vimscript를 사용하는 것입니다. 한 줄로 압축하면 다음과 같습니다.

:for n in [28,16,9,5] | call deletebufline("%",n,n) | endfor

관련 정보