VI편집기(VIM)
- -
1. vi편집기
1) vi와 vim 편집기
- vi편집기 : UNIX시스템의 표준 에디터
- vim편집기 : vi편집기에서 확장된 것(리눅스에서는 alias설정으로 vi편집기 실행됨)
2) vi에디터의 세가지 모드
- ex 모드 : 추가 명령을 실행, 검색치환기능, vi에디터 설정기능등.
- 명령어 모드 : 기본모드, 문자를 모두 명령어로 인식, 커서이동, 삭제, 수정, 복사, 붙여넣기등
- 입력 모드 : 글을입력할수 있는 모드
3) vi 편집기 실행
실행 : vi [옵션] [파일명]
- vi 파일명 : 파일열기
- vi +n 파일명 : 파일을 열었을 때 n번째 행에 커서 위치
- vi +/’문자’ 파일명 : 파일을 열었을 때 문자가 처음 나타난 곳에 커서 위치
- vi –r 파일명 : 저장하지 않고 종료된 파일을 다시 불러 수정
- vi –R 파일명 : 읽기 전용으로 파일열기
4) 입력모드로 전환
기본 명령모드에서 입력모드로 전환하는 방법
- a : 커서 뒤에 입력
- i : 커서 앞에 입력
- o : 커서가 있는 라인 아래에 새로운 라인 생성 후 입력
- A : 라인의 끝에 입력
- I : 라인의 시작부분에 입력
- O : 커서가 있는 라인 위에 새로운 라인 생성후 입력
5) 여러 파일 편집
파일을 편집하는 중간에 다른 파일 조회할 때 사용
파일 편집 도중 다른 파일을 불러오기
파일 두 개 이상 불러오고 불러온 파일들 사이를 이동할 때 사용
- :e 파일명 : 파일 편집중인 문서를 저장한 후 다른 파일을 불러와 편집
- :e! 파일명 : 현재 수정중인 파일을 저장하지 않고 , 새로운 파일을 불러와 편집
- :e# : 이전에 편집하던 파일로 되돌아감
- :f : 현재 편집중인 파일의 이름과 라인 수를 출력
- :r 파일명 : 파일 편집 중에 다른 파일 끼워넣기
6) vi 편집기 종료
vi 편집기 종료하려면 ex모드로 가야함 : [Esc]키 누름 à [:] 입력
- :q : 변경된 내용이 없는 경우 그대로 종료하기
- :q! : 변경된 내용을 저장하지 않고 종료하기
- :wq : 변경된 내용을 저장하고 종료하기
- :wq! : 쓰기 권한이 없는 파일에 대해 강제로 파일에 저장하고 종료하기
- :w new_filename : 변경된 내용을 새로운 파일로 저장하기
- :sh : vi를 일시 종료하고 shell상태로 나간후 셸 명령을 실행
2. vi에디터의 편집 기능
1) 커서 이동 명령
편집기 안에서 방향을 이동하는 명령
문자이동 h : 커서를 한 문자 왼쪽으로 이동
j : 커서를 한 라인 아래로 이동
k : 커서를 한 라인 위로 이동
l : 커서를 한 문자 오른쪽으로 이동
행 이동(명령어모드) H(home) : 현재 화면의 첫 행, 첫 칼럼으로 커서 이동
M(middle) : 현재 화면의 중간 행, 첫 칼럼으로 커서 이동
L(last) : 현재 화면의 마지막 행, 첫 칼럼으로 커서 이동
- : 윗 행의 첫 문자로 이동
+ : 아래 행의 첫 칼럼으로 커서 이동
<Enter> : 아래 행의 칼럼으로 커서 이동
^ 또는 <Home> : 현재 행의 처음으로 커서 이동
$ 또는 <End> : 현재 행의 마지막으로 커서 이동
행 단위 이동(ex모드) :n : n번째 행으로 커서 이동
:$ 또는 G : 문서의 마지막 행으로 커서 이동
화면 이동 <Ctrl>+f 또는 <PgDn> : 커서를 다음 페이지로 이동
<Ctrl>+h 또는 <PgUp> : 커서를 이전 페이지로 이동
<Ctrl>+d : 화면 내용이 반 페이지 아래로 이동
<Ctrl>+u : 화면 내용이 반 페이지 위로 이동
2) 삭제 명령
문자 x : 현재 커서 위치의 한 문자 삭제
nx : 현재 커서 위치의 문자를 포함하여 뒤쪽으로 n개의 문자 삭제
X : 현재 커서 위치 앞부분의 한 문자 삭제
nX : 현재 커서 위치의 문자를 포함하지 않고 앞쪽으로 n개의 문자 삭제
단어 dw : 현재 커서 위치에서 오른쪽 방향으로 한 단어 삭제(뒤쪽 공백 포함)
db : 현재 커서 위치에서 왼쪽 방향으로 한 단어 삭제
행 dd : 현재 커서가 위치한 행 전체 삭제
ndd : 현재 커서가 위치한 행부터 n 개의 행 삭제
D : 현재 커서가 위치한 위치부터 그 행의 끝까지 삭제
3) 복사/이동 명령
복사 : 복사 하고자 하는 데이터를 임시 기억장소에 저장 후 붙여 넣기
이동 : 이동하고자 하는 데이터를 잘라내어서 임시 기억장소에 저장 후 붙여넣기
- yw : 현재 커서가 위치한 단어를 임시 버퍼에 복사
- yy 또는 y : 현재 커서가 위치한 한 행을 임시 버퍼에 복사
- nY(n:정수) : 현재 커서가 위치한 행부터 n개의 행을 임시 버퍼에 복사
- P : 복사된 내용을 현재 커서가 위치한 행의 다음에 복사
- p : 복사된 내용을 현재 커서가 위치한 행의 위에 삽입
4) 검색 명령
검색 방향 |
사용 형식 |
기 능 |
순방향 |
/문자열/ /문자열 |
커서가 위치한 곳에서 순방향으로 문자열 검색 |
역 방향 |
?문자열? ?문자열 |
커서가 위치한 곳에서 역 방향으로 문자열 검색 |
다음문자 |
n |
검색하는 문자열이 여러 개인 경우 다음 문자를 경색. 순방향으로 검색 |
다음문자 |
N |
검색하는 문자열이 여러 개인 경우 다음 문자를 검색. 역방향으로 검색 |
5) 치환 명령/작업 취소
치환명령 r : 한 문자를 다른 문자로 치환
R : 하나 이상의 문자를 치환
cw : 현재 커서가 위치한 단어의 끝까지 치환
cc : 현재 커서가 위치한 단어의 끝까지 치환
C : 현재 커서 위치에서 그 행 끝까지 치환
작업취소 u : undo. 바로 전에 수행했던 명령들을 실행 취소
U : 현재 커서가 위치한 행에서 수행되었던 명령을 취소
. : 바로 전에 수행한 명령을 반복 수행
3. vi에디터의 활용
Ex에디터를 기반으로 제작된 화면 단위의 에디터
1) 치환 명령 / 작업 취소
복사/삭제/이동/부분저장
기능 |
명령 |
기능 |
복사(co) |
:1,2 co 3 |
1-2행을 3행 다음으로 복사 |
복사(t) |
:1,5 t 3 |
1-5행을 3행 다음으로 복사 |
이동(m) |
:4,5 m 6 |
4-5행을 6행 다음으로 이동 |
삭제(d) |
:1,5 d |
1-5행을 삭제 |
부분저장(w) |
:1,5 w newfile |
1-5행을 newfile이라는 새파일로 저장 |
문자열 치환 :n,m s/string1/string2/g
n |
치환을 시작하고자 하는 라인의 시작번호 |
m |
치환을 시작하고자 하는 라인의 끝번호 |
s |
치환 명령 |
/ |
string간의 구분 문자 |
string1 |
찾는 문자열 |
string2 |
치환할 문자열 |
g |
n부터 m라인에 string1이 여러 번 나타날 경우 string2로 모두 치환 |
TIP : 문자열 치환 예
:s/aaa/bbb또는 :.s/aaa/bbb |
현재 커서가 위치한 라인의 첫 번째 aaa단어를 bbb단어로 치환 |
:s/aaa/bbb/g |
현재 커서가 위치한 라인의 모든 aaa단어를 bbb단어로 치환 |
:20s/aaa/bbb |
20번째 라인에서 첫 번째 aaa단어를 bbb단어로 치환 |
:5,10s/aaa/bbb |
5번 라인부터 10번 라인까지 첫 번째 aaa단어를 bbb단어로 치환 |
:5,10s/aaa/bbb/g |
5번 라인부터 10번 라인까지 모든 aaa단어를 bbb단어로 치환 |
:1,$s/aaa/bbb/g :%s/aaa/bbb/g |
1행부터 마지막 행까지 모든 aaa단어를 bbb단어로 치환 |
:s/aaa// |
현재 커서가 위치한 라인의 첫 번째 aaa문자를 삭제 |
:s/aaa//g |
현재 커서가 위치한 라인의 모든 aaa문자를 삭제 |
:1,$s/aaa//g |
1행부터 마지막 행까지 모든 aaa단어를 삭제($=마지막) |
:.-10,.+5s/aaa/bbb/g |
현재 커서가 위치한 라인 -10행부터 현재 커서가 위치한 라인 +5행까지의 모든 aaa단어를 bbb로 치환 |
4. vi 에디터 환경설정
1)set명령어
vi편집기에서 라인번호 표시 또는 들여쓰기를 넣는등의 설정
:set |
vi 모드에서 지정할수 있는 모드 값을 출력 |
:se nu :se nonu |
파일의 내용에 라인번호를 붙여서 출력, 해제 |
:set ai :set noai |
자동 인덴트를 설정하거나 설정된 자동 인덴트 기능을 해제 |
:set cindent :set nocindent |
C프로그래밍 자동 인덴트 설정 또는 해제 |
:set hlsearch :set nohlsearch |
패턴검색에서 일치되는 단어가 찾아지면 쉽게 볼수 있도록 하이라이트 표시, 해제 |
:set ts=8 :set tabstop=5 |
탭 키의 크기 변경(기본 8칸) |
:syn on :syn off |
vim에서 기본으로 지원한느 코드별 컬러 표시, 해제 |
:map 명령 기능 |
key map을 정의하여 새로운 명령 만들기 |
2) vi 환경설정 파일
vi환경설정 파일은 .vimrc와 .exrc사용(로그인사용자의 홈디렉토리에 있음)
vi실행 시 로그인 사용자의 홈 디렉토리에서 .vimrc 파일 검색 후 적용
.vimrc파일이 없는경우 .exec 파일 검색 후 적용
자주 사용안하는것들은 매일 찾느라 고생;;;
가져온곳 : http://daecheol.tistory.com/entry/vi%ED%8E%B8%EC%A7%91%EA%B8%B0
소중한 공감 감사합니다