행마다 번호 매기기

별로 쓸일은 없지만 예전부터 궁금했던 문제가 하나 있었다.
vi를 사용해서 행마다 번호를 매기는거였는데 비록 vi를 사용하는 건 아니지만 아무튼 꼼수를 오늘 찾았다.

원본 파일이
a
b
c
d
이고

원하는 결과는
1 a
2 b
3 c
4 d
이다.

원본 파일을 file1.txt라고 하면

cat -n file1.txt > file2.txt

이렇게 하면 된다.

그런데 vi를 사용해서 하는 방법은 없을까.
recording 기능을 사용해서 아래처럼 하면 어찌어찌 되긴 한다.

이 시간 피파랭킹은 아래와 같다.


Spain
Netherlands  
Germany  
Uruguay  
England  
Brazil
Portugal
Croatia  
Italy
Argentina
Denmark  
Chile
Russia
Greece
France
Switzerland  
Sweden
Côte
Bosnia
Japan
Australia
Mexico

여기에 숫자로 순위를 표시하고 싶다.

일단 Spain 앞에 1. 을 입력한다.
1. Spain
Netherlands

..

그리고 커서를 N에다가 위치시키고 아래 명령을 차례데로 날려주면 된다.
q
a #a라는 레지스터에 레코딩
^
k
v
w
l
y
j
P
^
ctrl+a
j
q #레코팅 끝
20@a #a레지스터를 20번 실행

이렇게 명령을 날려주면 된다. 막상 해보니 그렇게 어려운 작업은 아니지만 그래도 좀 쉬운 방법 없을까.


<Tip>

전체 레지스터 확인하기
:reg

레지스터 a에 기록된 매크로 보기
:reg a

레지스터 a 수정하기
1. :let @a='
2. ctrl+r ctrl+r
3. 매크로 수정
4. ' 입력하고 Enter
5. :reg a 로 확인

http://vim.wikia.com/wiki/Macros#Viewing_a_macro

댓글

이 블로그의 인기 게시물

미적분과 차원

자바 로깅

apache rewrite_module 로그