유용한 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 컬럼을 역순으로 배열한다.
출처 - http://intomysql.blogspot.kr/2011/01/vi.html
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 컬럼을 역순으로 배열한다.
출처 - http://intomysql.blogspot.kr/2011/01/vi.html
댓글
댓글 쓰기