vim global 명령을 사용하여 이와 같은 작업을 수행하고 싶습니다. 이것은 줄의 시작 부분에 반복을 추가하거나 텍스트의 기호를 수정하는 데 적용됩니다. 다른 솔루션보다 복잡해 보이지만 편리 할 때 사용할 수있는 매우 유연한 패턴이며 많은 생각없이 쉽게 수정할 수 있습니다.
먼저 범위를 선택하십시오 (이 라인을 적용하려는 선). 나는 보통 마크를 사용합니다 (예 : ma
첫 번째 줄과 mb
두 번째 줄에서 줄 번호 나 시각적 선택을 사용할 수도 있습니다). 다음 명령의 수정 사항을 입력하십시오 (현재 사용 사례에 맞게 조정 됨).
:let i=1|'a,'bg/^/s/^/\=i.". "/|let i=i+1
해체
:let i=1
i
시작 값으로 변수 를 설정합니다 . 일반적으로 목록은 1로 시작하므로 i를 1로 설정합니다.
|
바는 새로운 명령을 시작합니다
'a,'b
다음 명령의 범위를 설정합니다. mark a
to mark b
로 이동합니다. 목록의 첫 번째 줄과 마지막 줄에 설정됩니다.
g/^/
이것이 전역 명령입니다. 주어진 정규식에 대해 파일 (또는 범위)을 검색하고 일치하는 각 행에서 나머지 명령 행을 실행합니다 . "줄의 시작"을 검색하여 모든 줄을 찾습니다. 당신이 같은 텍스트를 가지고 있다면
Item some txt
other text
Item second item
whatever
Item third
그리고이 레이블을 Item
다른 줄 앞에 놓고 다른 줄을 무시하고, 대신 g/Item/
하거나 g/^Item/
대신하십시오 (리터럴 항목 텍스트 가정)
s/^/\=i.". "/
이것은 정규 표현식을 실행하여 행의 시작 부분을로 i
연결된 값으로 대체합니다 .
. 일반적으로이 작업을 수행 할 수 있습니다 ( Item
예 : 레이블 을 숫자로 바꿉니다).
|let i=i+1
막대가 새 명령을 시작하더라도 전역이 완료된 후가 아니라 전역 명령 내에서 실행할 두 번째 명령을 설정합니다. 결과는 i
다음 행이 g에 의해 처리되기 전에 증가 합니다. 여기 또 다른 유연성이 있습니다. i의 수정은 무엇이든 가능합니다 (2 씩 증가, 피보나치 시퀀스의 다음 요소를 생성하는 함수 호출).
awk
아마도이 직업을위한 도구 일 것입니다. 그러나 나는 Windows에 있습니다 (한숨).