Vim의 기존 텍스트 위에 연속적인 정수 열을 쓰는 방법은 무엇입니까?

Vim의 기존 텍스트 위에 연속적인 정수 열을 쓰는 방법은 무엇입니까?

예를 들어 다음과 같은 텍스트가 있다고 가정해 보겠습니다.

/ apple
/ orange
/ banana
/ bread

열에 연속된 정수를 효율적으로 추가하는 방법은 무엇입니까?

/1 apple
/2 orange
/3 banana
/4 bread

실제 문제에서는 목록 길이가 20줄, 50줄 또는 그 이상일 수 있습니다.

답변1

vim한 가지 아이디어는 매크로 기능을 사용하는 것입니다 . 커서를 /첫 번째 위치 에 놓고 / apple다음을 수행합니다.

a1<Esc>

모든 것을 시작하려면 첫 번째 숫자를 삽입하십시오( <Esc>Escape 키로). 그런 다음 새로 삽입된 항목에 커서를 놓고 1매크로를 기록합니다(슬롯에 q).

qqyiwj0p<C-a>q

이제 처음 두 행에 번호가 매겨져 있어야 합니다. 이제 매크로를 n-2여러 번 실행할 수 있습니다. 여기서 n총 행 수는 다음과 같습니다. 예를 들어, 50개의 행이 있는 경우 2개의 행을 수동으로 채웠기 때문에 매크로를 48번 실행합니다.

48@q

답변2

vim의 "외부 명령을 통한 파이프" 기능을 사용할 수 있습니다. vim에서 파일을 열고 다음을 수행하십시오.

:%!cat -n | awk '{print $2, $1, $3;}' | sed 's/ //'

영리한 awk 코드를 사용하면 sed를 사용하지 않아도 됩니다(각 줄의 첫 번째 공백만 제거함). 30초 안에 작동이 안되서 sed를 사용했습니다.

관련 정보