2011년 1월 3일 월요일

유용한 VI 명령어 모음

저장 및 파일 읽기 명령
vi -r <파일명> : VI가 비정상 종료되었을 때, 작성중이던 파일을 복구한다. (Vi가 아닌 Shell명령)
:1,4w <파일명> : 1부터 4줄까지를 지정된 파일명으로 저장한다.
:r <파일명>    : 현재 편집중인 내용에 <파일명> 파일의 내용을 읽어서 덧붙인다.

라인 삭제
d1G : 문서의 첫번째 줄부터 현재 이전 줄까지 삭제
dG  : 문서의 현재 줄부터 끝까지 삭제

문서의 영역 선택 및 위치 마킹
mx  : 현재 라인을 "x" 라는 이름으로 마킹 ('m' 다음 문자의 이름으로 현재 라인을 마킹)
v   : Visual 영역 선택

명령 반복
.   : 마지막 실행했던 명령 재실행

대소문자 전환
'v' 명령으로 Visual 영역을 선택한 후, '~' 키를 입력하면 대문자를 소문자로 소문자를 대문자로 전환
:%s/.*/L&/ : 문서 전체를 소문자로 변환
:%s/.*/U&/ : 문서 전체를 대문자로 변환

들여쓰기
>>  : 명령을 입력하면 현재 줄만 들여쓰기 실행
n>> : 명령을 입력하면 현재 줄부터 n번째 줄까지 들여쓰기 실행
>%  : 괄호가 시작되는 부분에 커서를 옮기고 실행해야 하며, 괄호의 짝이 쌍으로 끝나는 부분까지 들여쓰기 실행 (소괄호, 중괄호, 대괄호 모두 적용되며, 괄호가 포함된 라인까지 들여쓰기 함)
>}  : 한 문단을 들여쓰기 실행

내어쓰기
<<  : 명령을 입력하면 현재 줄만 내어쓰기 실행
n<< : 명령을 입력하면 현재 줄부터 n번째 줄까지 내어쓰기 실행
<%  : 괄호가 시작되는 부분에 커서를 옮기고 실행해야 하며, 괄호의 짝이 쌍으로 끝나는 부분까지 내어쓰기 실행 (소괄호, 중괄호, 대괄호 모두 적용되며, 괄호가 포함된 라인까지 내어쓰기 함)
<}  : 한 문단을 내어쓰기 실행

문서 검색
/검색어 : '검색어'를 문서의 뒷부분으로 검색 (커서 기준)
?검색어 : '검색어'를 문서의 앞부분으로 검색 (커서 기준)
n        : 검색을 순방향으로 진행
N        : 검색을 역방향으로 진행

문자열 변환
:s/변환전/변환후/    : 현재 줄에서 처음 검색된 "변환전" 문자열을 "변환후"로 대체
:s/변환전/변환후/g   : 현재 줄의 모든 "변환전" 문자열을 "변환후" 로 대체
:%s/변환전/변환후/g  : 문서의 모든 "변환전" 문자열을 "변환후" 로 대체
:%s/변환전/변환후/gc : 문서의 모든 "변환전" 문자열을 "변환후" 로 대체 (대체시 확인 메시지 출력)

VI 모드 변경
:set paste    : 붙혀넣기 모드 활성화 (자동 들여쓰기 방지) <-> :set nopaste
:set ic       : 검색시 대소문자 구분 무시                 <-> :set noic
:se ai        : 자동 들여쓰기                             <-> :se noai
:se list      : 탭과 새줄을 특수문자로 표시               <-> :se nolist
:se nu        : 줄 번호를 출력                            <-> :set nonu
:se sm        : 괄호 입력시 대응하는 괄호 표시            <-> se nosm
:se sw=2      : 들여쓰기를 공백 2개로 설정한다.
:se tabstop=4 : 탭 크기를 공백 4개로 설정한다.

커서 이동
G  : 파일의 제일 마지막 줄로 이동
nG : 파일의 n 번째 줄로 이동
1G : 파일의 제일 첫번째 줄로 이동
%  : 괄호 짝을 찾아서 이동
)  : 다음 문장으로(구두점으로 구분) 이동
}  : 다음 문단으로(빈 줄로 구분) 이동
]  : 다음 섹션으로 이동
'x : 'x'로 마킹된 줄로 이동

VI에서 외부 명령 실행
!!                 : 현재 줄을 외부 프로그램의 입력으로 제공하고, 외부 프로그램을 실행한 결과로 대체한다.
!!date             : 현재 줄을 날짜로 대체
3!!sort            : 현재 줄 부터 3줄을 sort의 입력으로 제공하고, 그 실행 결과로 대체한다.
!}sort             : 현재 줄 부터 문단 끝(첫번째 빈 줄 나오는 부분)을 정렬한다.
:'x,. !sed '/^$/d' : 마크 'x' 줄부터 현재 줄까지 빈 줄을 삭제한다.
:'x,. !awk '{print $3 " " $2 " " $1}' : 마크 'x' 부터 현재 줄까지 3 컬럼을 역순으로 배열한다.

댓글 없음:

댓글 쓰기