<VI editor 사용법 정리
버퍼 관리: 일반모드
삭제
vi 에서의 삭제 = 임시 버퍼에 잘라내기
x, dl | 커서 위치의 글자 삭제 |
X, dh | 커서 바로 앞의 글자 삭제 |
dw | 한 단어를 삭제 |
d0 | 커서 위치부터 줄의 처음까지 삭제 |
D, d$ | 커서 위치부터 줄의 끝까지 삭제 |
dd | 커서가 있는 줄을 삭제 |
dj | 커서가 있는 줄과 그 다음 줄을 삭제 |
dk | 커서가 있는 줄과 그 앞줄을 삭제 |
<-실습->
<원문>
명령어 입력
j0wd0wxxxxwwXXXjwwD
다음 줄의 처음으로 이동해(j0) 한 단어 오른쪽으로 이동한 후 (w) 커서 위치에서부터 줄의 처음까지 지우고(d0) 다시 한 단어 이동한 뒤(w) 커서 위치의 네 글자를 지우고(xxxx) 다시 두 단어 이동한 뒤(ww)커서 바로 앞의 세 글자를 지우고(XXX) 다음 줄로 내려가 두 단어 오른쪽으로 이동한 후 거기에서부터 줄의 끝까지 지운다.(jwwD)
<바뀐 내용>
붙여넣기(paste)
- P :아래로 붙여넣기
- p:위로 붙여넣기
복사하기(yank)
yw | 커서 위치부터 단어의 끝까지 복사 |
y0 | 커서 위치부터 줄의 처음까지 복사 |
y$ | 커서 위치부터 줄의 끝까지 복사 |
yy | 커서가 있는 줄을 복사 |
yj | 커서가 있는 줄과 그 다음 줄을 복사 |
yk | 커서가 있는 줄과 그 앞줄을 복사 |
<-실습->
<원문>
명령어 입력
kkjyyjpjdw$pdw$p0dw$p
두 줄 위로 올라가(kk) 다음 줄을 복사(jyy) 한 줄 아래로 이동한 후 커서 뒤쪽에 끼워 넣은 후 (jp) 한 줄 아래로 내려가 한 단어 삭제 후 그 단어를 그 줄의 맨 끝에 붙여넣고(jdw$p) 다시 맨 앞의 한 단어를 삭제 한 후 맨 뒤에 붙여 넣으라는 뜻(0dw$p)
<바뀐 내용>
일반모드: 반복지정
- 일반모드에서는 명령어 앞에 숫자를 붙이면 반복 지정
<원문>
명령어 입력
2j3dd3p
2줄 아래로 이동(2j) 3줄 삭제(3dd) 삭제 되어 버퍼의 내용을 3번 붙이기
<바뀐 내용>
일반모드: 검색
-패턴 검색
/[pattern] | 현재 위치에서부터 아래 방향으로 패턴 검색 |
?[pattern] | 현재 위치에서부터 위쪽 방향으로 패턴 검색 |
n | 검색하던 방향으로 계속 패턴 검색 |
N | 검색하던 반대 방향으로 계속 패턴 검색 |
<-실습->
<원문>
"member"라는 단어를 검색하고자 할 때 다음과 같이 입력한다.
/member(명령모드) 위쪽 방향으로 찾을 때 ?member
<바뀐 내용>
일반모드: 실행 취소
u | 작업 취소(undo) |
U | 그 줄에 행해진 작업 모두 취소 |
Ctrl+r | 작업 재실행(redo) |
. | 조금 전에 했던 명령을 반복 |
J | 현재 줄과 아래 줄을 연결 |
~ | 대문자를 소문자로, 소문자를 대문자로 바꿈 |
% | 괄호의 반대쪽 짝으로 이동 |
Ctrl+l | 현재 화면을 지우고 다시 그림 |
Ctrl+g | 파일에 관한 정보를 표시 |
<-실습->
<원문>
명령어 입력
kkk0bbbxxxuuujdw.UkkJ
세 줄 위로 이동해 그 줄의 맨 앞으로 이동 후 세 단어 오른쪽으로 이동하고 (kkk0bbb) 글자 세 개를 지웠다가 이를 취소한 후(xxxuuu) 한 줄 아래로 내려가 한 단어를 삭제하고(jdw) 다시 한번 한 단어를 삭제하고(.) 그 줄에서 행해진 작업을 모두 취소한 뒤(U) 두 줄 올라가 그 줄과 그 다음 줄을 연결하라(kkJ)는 명령이다.
<바뀐 내용>
명령 행 모드
:w [filename] | filename이 지정되면 해당 파일에 쓰기를 지정 filename이 생략되면 현재 파일에 쓰기를 지정 |
:w >> file | 현재 편집 중인 문서를 file의 뒷부분에 붙임 |
:[range]w >> file | 위와 같지만 range(범위)만 붙임 |
:up | 변경된 점이 있을때만 ":w"명령어를 실행 |
<-실습->
w [filename]
w >> file
밑에 추가된 걸 확인할 수 있다.
명령 행 모드: 옵션설정
:set | 현재 옵션 설정을 보여줌 |
:set all | 모든 옵션 설정을 보여줌(default 옵션까지 출력) |
:set [no]name | name에 해당하는 옵션을 on/off 함 (앞에 prefix를 no를 지정하는 경우가 off) |
:set name=value | name 옵션에 value의 값을 할당함 |
<-실습->
set
set all
set nu(행번호를 표시해주는 옵션)
.vimrc 예시
nu | (number)화면에 행번호 표시 |
ai | (autoindent) 자동 들여쓰기 |
cindent | C언어 스타일의 들여쓰기 |
ts=value | (tabstop)화면에 표시 될 탭 크기를 value로 지정 |
sw=value | (shiftwidth) 자동 블록 이동시 열의 너비 |
fencs=value | (fileencodings) 지원할 파일 인코딩 방식 리스트 *복수개 지정시 콤마로 구분(공백없음) |
fenc=value | (fileencoding) 현재 파일 인코딩 방식을 지정 |
visual mode
v키(소문자)의 비주얼 모드
CTRL-V 키의 비주얼 블록 모드
윈도우 분할(수평)
상하 분할 윈도우
- vi -o 파일1 파일2
- :sp [파일]
<-실습->
좌우 분할 윈도우
- vi -O 파일1 파일2
- :vs [파일]
<-실습->
윈도우 간 이동
- CTRL-WW : 이전 윈도우로 이동
- CTRL-W [h j k l]: h, j, k, l이 지닌 이동방향으로(좌 하 상 우)
<END>
<vi 부분 참고 자료 : http://kldp.org/KoreanDoc/html/Vim_Guide-KLDP>