vim에서 라인번호를 인식하는 방법이 있나요?

thisrule의 이미지

vim에서 라인번호를 인식하는 방법이 있나요?
질문이 모호해서 제가 하려는 걸 직접 물어보겠습니다.
예를들어 아래와 같은 파일이 있습니다.

X= 0131 Y= 0088 B= 19
X= 0130 Y= 0088 B= 19
X= 0129 Y= 0088 B= 19
X= 0128 Y= 0088 B= 19
X= 0127 Y= 0088 B= 19
X= 0126 Y= 0088 B= 19
X= 0125 Y= 0088 B= 19
X= 0124 Y= 0088 B= 19
X= 0123 Y= 0088 B= 19
X= 0132 Y= 0087 B= 19
X= 0131 Y= 0087 B= 19
X= 0130 Y= 0087 B= 19
X= 0129 Y= 0087 B= 19

위 파일을 아래와 같이 바꾸고자 합니다.
D001:X= 0131 Y= 0088 B= 19#
D002:X= 0130 Y= 0088 B= 19#
D003:X= 0129 Y= 0088 B= 19#
D004:X= 0128 Y= 0088 B= 19#
D005:X= 0127 Y= 0088 B= 19#
D006:X= 0126 Y= 0088 B= 19#
D007:X= 0125 Y= 0088 B= 19#
D008:X= 0124 Y= 0088 B= 19#
D009:X= 0123 Y= 0088 B= 19#
D010:X= 0132 Y= 0087 B= 19#
D011:X= 0131 Y= 0087 B= 19#
D012:X= 0130 Y= 0087 B= 19#
D013:X= 0129 Y= 0087 B= 19#

물론 C든 python이든 program language를 사용해서 해결할 수도 있지만,
vi(vim)에서 치환명령을 사용해서도 될 거 같은데 안되네요.
뭔가 라인 번호를 인식해서 넣어줘도 될거 같긴 한데,
D001,D002,...를 표현하기도 쉽지 않을거 같긴 합니다.

vim 고수분들의 의견 바랍니다.

Prentice의 이미지

:%!nl -n rz -w3 -s:
:%s/$/#/g
:%s/^/D/g

thisrule의 이미지

감사합니다.
외부 명령을 이용하는 방법이 있었군요.
새로운걸 알게되어 정말 기쁘네요. ㅋ