유용한 vi명령어

FAQ 2005/06/27 18:16
o 삽입
I: 줄의 제일 앞에서 입력
A: 줄의 제일 끝에서 입력

o 콤보command
4w: 4단어 skip후 이동
4b: 4단어 skip후 이동
4j,h,k,l: 커서이동시 지정한 수만큼 건너뛰므로
이동을 좀 더 빨리 할 수 있다.

o 줄의 결합(J)
2줄이 있고, 2째줄을 1째줄 끝에 붙이고 싶다면,
1째줄에서 J를 입력하면 된다.

o 커서이동
0: 줄의 처음
^: 줄의 처음(글자가 시작되는 처음)
$: 줄의 끝
w: 단어단위 이동
e: w와 같으나 단어의 끝으로 이동
b: w의 반대방향으로 이동
H, M, L: 커서를 화면 상,중,하로 이동

o 검색(/후 검색할 단어입력)
n: 뒤로 검색
N: 앞으로 검색

o 매크로
ab aa aaaa: aa를 입력하면 aaaa로 자동변환

o 치환
s/pattern/replace: 현재줄의 첫번째 matching pattern치환
s/pattern/replace/g: 현재줄의 모든 matching pattern치환
%s/pattern/replace/g: 모든 줄의 치환
line,lines/pattern/replace: 해당 범위의 치환

o 저장
w>> file: 지정한 파일에 추가

o 윈도 split
vi내에서 위아래로 윈도가 분활되면서 2개의 파일을
동시에 open/편집할 수 있다.
ex-mode(:프롬프트상태)에서 'sp 파일이름'
윈도우가 전환은 Ctrl+ww

o 기타
1. d의 경우 command모드로 계속 남아 있으나 c는 삭제후
insert모드로 변환한다. cc, c$, cw등은 유용하게 사용될 수 있다.
2. .은 마지막 명령을 되풀이한다.

o visual모드
윈도의 텍스트 에디터와 같이 선택부분이 반전되면서 복사,
삭제 등을 할 수 있다.
v로 visual모드로 집입하여 커서키를 사용해 원하는 부분을 선택한다.
복사는 y, 삭제/잘라내기는 d로 할 수 있다.

o vi 설정(vim 설정)
자신의 홈디렉토리에 .vimrc를 생성하고 다음과 같이 할 수 있다.

set ai : auto-indent
set ts=4 : tab stop
set nu : numbering

o 윈도에서 작업중 vi에 붙여넣기시 계단현상발생 방지
:set paste

o 위치기억(UltraEdit의 ALT-F2, F2와 동일한 기능)
m{a-z}: 현재위치를 {a-z}로 북마크함
`{a-z}: 기억해둔 {a-z}로 이동. 보통 한개만 등록했다면
그냥 ``를 사용하면 된다.

o 레코딩
설정파일의 주석추가/삭제시 유용하게 사용할 수 있다.
(이미 vi에 매크로기능이 있지만, 레코딩이 UltraEdit의 매크로기능과 유사하다.)
q{a-z}: {a-z}로 레코딩 시작. {a-z}만 가능한게 아니고 실제 {0-9a-zA-Z"}를
적기 번거로워 이렇게 표시만 한 것이다.
q: 레코딩 종료
@{a-z}: 레코딩 내용 적용(@@를 하면 바로 이전의 레코딩내용을 적용, N@@은
N으로 지정한 숫자만큼 적용)

----------------------
[vi] 치환(substitute)
----------------------
[범위] s [/패턴/대치/] [옵션] [카운트]

- 옵션
c 치환전 확인 유무 물음
g 글로벌 치환
p 치환된 마지막 라인 출력

- 예제
:1,10s/yes/no/g 처음 10행 치환
:%s/[Hh]ello/Hi/gc 치환 확인 물음
:s/Fortran/\U&/ 3 다음 3행의 "Fortran"을 대문자로 치환
:g/^[0-9][0-9]*/s//Line &:/ 숫자가 있는 모든라인에 Line: 추가

----------------------
[vi] 파일 오가며 편집하기
----------------------
:e#

"f4yy → :w → :e other_file → "fp
:f 버퍼에 4라인 복사후 붙이기
"F6yy
:f 버퍼에 6라인 추가
2005/06/27 18:16 2005/06/27 18:16

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다