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,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

관련 정보