Vi 편집기 의 기본 사용 방법

vi 는 세 가지 상태 로 나 뉜 다.
명령 모드 (command mode): 커서 의 이동, 문자, 글자 또는 줄 의 삭 제 를 제어 하고 특정한 구간 을 이동 하여 복사 하 며 삽입 모드 와 기본 줄 모드 에 들 어 갑 니 다.
삽입 모드 (Insert mode): 이 모드 에서 만 텍스트 입력 을 할 수 있 습 니 다. "ESC"를 누 르 면 명령 행 모드 로 돌아 갑 니 다.
기본 줄 모드 (Last line mode): 파일 을 vi 에 저장 하거나 종료 할 수도 있 고 문자열 찾기, 줄 번호 표시 등 편집 환경 을 설정 할 수도 있 습 니 다.
들어가다
: 시스템 알림 기호 $에 vi my file 을 입력 하면 vi 전체 화면 편집 화면 에 들 어 갑 니 다.명령 모드.삽입 모드 만 텍스트 를 입력 할 수 있 습 니 다.
1. 삽입 모드 의 명령 안내
"명령 모드"에서:
"i"를 누 르 면 삽입 모드 로 전환 한 후 커서 의 현재 위치 부터 문 자 를 입력 합 니 다.I 커서 가 있 는 열의 첫 번 째 비 공백 문자 앞에서 부터 문 자 를 삽입 합 니 다.
"a"를 누 르 면 삽입 모드 에 들 어간 후 커서 가 있 는 위치의 다음 위치 부터 문 자 를 입력 합 니 다.A. 커서 가 있 는 맨 뒤에 있 는 곳 부터 자 료 를 추가 합 니 다.
"o"를 누 르 면 삽입 모드 에 들 어간 후 새로운 줄 을 삽입 하고 줄 의 첫머리 부터 문 자 를 입력 합 니 다.O 커서 가 있 는 열 위 에 1 열 을 추가 하고 삽입 모드 에 들 어 갑 니 다.
'삽입 모드' 에 서 는 텍스트 만 계속 입력 할 수 있 으 며, 잘못 입력 하면 'ESC' 를 누 르 고 '명령 모드' 로 이동 해서 삭제 할 수 있 습 니 다.
2. 명령 모드 의 명령 안내
이동 하 다.
vi. 소문 자 'h', 'j', 'k', 'l' 로 각각 커서 의 왼쪽, 아래, 위, 오른쪽으로 한 칸 을 제어 한다.
"ctrl"+ "b"를 누 르 면 화면 이 "뒤로"로 한 페이지 이동 합 니 다.
"ctrl"+ "f"를 누 르 면 화면 이 "앞으로"로 한 페이지 이동 합 니 다.
"ctrl"+ "u"를 누 르 면 화면 이 "후"로 반 페이지 이동 합 니 다.
"ctrl"+ "d"를 누 르 면 화면 이 "앞"으로 반 페이지 이동 합 니 다.
"0": 글 의 시작 으로 이동 합 니 다.
"G"누 르 기: 마지막 문장 으로 이동
"$"누 르 기: 커서 에 있 는 "줄 끝"으로 이동 합 니 다.
"^"를 누 르 십시오: 커서 에 있 는 "줄 머리"로 이동 합 니 다.
"w": 커서 를 누 르 면 다음 글자 의 시작 으로 이동 합 니 다.
"e": 커서 를 누 르 면 다음 글자 의 끝으로 이동 합 니 다.
"b": 커서 를 누 르 면 이전 글자 의 시작 으로 돌아 갑 니 다.
'\# l': 커서 를 누 르 면 이 줄 의 첫 번 째\# 위치 로 이동 합 니 다. 예 를 들 어 5l, 56l.
삭제
"x": 한 번 누 를 때마다 커서 가 있 는 위치의 "뒤에"문 자 를 삭제 합 니 다.
'\# x': 예 를 들 어 '6x' 는 커서 가 있 는 위 치 를 삭제 하 는 '뒤에' 6 개의 문 자 를 표시 합 니 다.
"X": 대문자 X, 누 를 때마다 커서 가 있 는 위치의 "앞"문 자 를 삭제 합 니 다.
'\# X': 예 를 들 어 '20X' 는 커서 가 있 는 위 치 를 삭제 하 는 '앞' 20 자 를 표시 합 니 다.
"dd": 커서 를 삭제 하 는 데 익숙 한 줄
"\# dd": 커서 에 있 는 줄 부터 삭제 합 니 다\# 줄
복제 하 다.
"yw": 커서 가 있 는 곳 에서 끝 에 있 는 문 자 를 버퍼 에 복사 합 니 다.
"\# yw": 버퍼 에\# 글 자 를 복사 합 니 다.
"yy": 버퍼 에 있 는 커서 를 복사 합 니 다.
'\# yy': 예 를 들 어 '6yy' 는 커서 가 있 는 이 줄 에서 6 줄 의 문 자 를 복사 하 는 것 을 나타 낸다.
"p": 버퍼 안의 문 자 를 커서 가 있 는 위치 에 붙 입 니 다.메모: "y"와 관련 된 모든 복사 명령 은 "p"와 결합 해 야 복사 와 붙 여 넣 기 기능 을 완성 할 수 있 습 니 다.
바꾸다
"r": 커서 가 있 는 곳 의 문 자 를 바 꿉 니 다.
"R": "ESC"키 를 눌 렀 을 때 까지 커서 가 있 는 곳 의 문 자 를 바 꿉 니 다.
회복 하 다.
"u": 명령 을 잘못 실행 하면 "u"를 누 르 고 이전 작업 으로 돌아 갈 수 있 습 니 다."u"를 여러 번 누 르 면 여러 번 답장 을 실행 할 수 있 습 니 다.
변경 하 다.
"cw": 커서 가 있 는 곳 의 글 자 를 끝까지 변경 합 니 다.
"c\# w": 예 를 들 어 "c3w"는 3 글자 변경 을 표시 합 니 다.
직업 을 바꾸다
"ctrl"+ "g"은 커서 가 줄 에 있 는 줄 번 호 를 보 여 줍 니 다.
'\# G': 예 를 들 어 '15G' 는 커서 를 글 의 15 번 째 줄 로 이동 하 는 것 을 나타 낸다.
맞추다
     a. 명령 모드 에서: =: 1, $
     b. gg (닫 힌 표 지 를 맨 위 에 위치), V (VISUAL 모드 로 들 어가 기), shift + g (전체 텍스트 선택), 그리고 =.
     c.gg=G
 
3. 기본 줄 모드 명령 안내
사용 중 "
기본 줄 모드 전에 "ESC"키 를 눌 러 서 "있 는 지 확인 하 세 요."
명령 모드 에서 ":"번 호 를 누 르 면 "들 어 갈 수 있 습 니 다."
기본 줄 모드
a) 줄 번호 표시
"set nu": "set nu"를 입력 하면 파일 의 줄 마다 줄 번 호 를 표시 합 니 다.
b) 파일 의 한 줄 로 건 너 뛰 기
"\#": "\#"번 호 는 숫자 를 표시 합 니 다. 사칭 후 숫자 를 입력 하고 Enter 키 를 누 르 면 이 줄 로 넘 어 갑 니 다. 숫자 15 번 을 입력 하면 문장의 15 번 째 줄 로 넘 어 갑 니 다.
c) 문자 찾기
'/키워드': '/' 키 를 누 르 고 찾 고 싶 은 문 자 를 입력 하 십시오. 처음 찾 는 키워드 가 원 하 는 것 이 아니라면 'n' 을 누 르 고 원 하 는 키 워드 를 찾 을 수 있 습 니 다.
'? 키워드': '?' 키 를 누 르 고 찾 고 싶 은 문 자 를 입력 하 십시오. 처음 찾 는 키워드 가 원 하 는 것 이 아니라면 'n' 을 누 르 고 원 하 는 키 워드 를 찾 을 수 있 습 니 다.
d) 파일 저장
: w filename ('w filename' 을 입력 하여 지정 한 파일 이름 filename 으로 글 을 저장 합 니 다)
: wq ("wq"를 입력 하고 vi 를 종료 합 니 다)
: q! (q 입력!, 메모리 없 이 vi 강제 종료)
편집기 명령 모음 (Emacs, Vim)
exit:                            C-x C-c          :qa /:wq /:xa /:q!
Get back/command mode:           C-g              <esc>
Backward(left):                  C-b              h
Forward(right):                  C-f              l
Next(down):                      C-n              j
Previous(up):                    C-p              k
stArt of line(^):                C-a              0
End of line($):                  C-e              $
mUltiple commands:               C-u nnn cmd      nnn cmd
Multiple commands:               M-digitkey cmd
save File:                       C-x C-s          :w file
beginning of buffer:             M-<              1G
end of buffer:                   M->              G
scroll forward 1 screen:         C-v              ^F
scroll forward 1/2 screen:                       ^D
scroll forward 1 line:                           ^E
scroll backward 1 screen:        M-v              ^B
scroll backward 1/2 screen:                      ^U
scroll backward 1 line:                          ^Y
scroll the other window:         M-C-v
delete under cursor:             C-d              x
delete from cursor to eol:       C-k              D
iSearch forward:                 C-s
isearch Reverse:                 C-r
Search forward:                  C-s enter        /
search Reverse:                  C-r enter        ?
isearch regexp:                  M-C-s
isearch backward regexp:         M-C-r
search regexp:                   M-C-s enter      /
search backward regexp:          M-C-r enter      ?
Help:                            C-h C-h          :help
Help Apropos:                    C-h a
Help key Bindings:               C-h b            :help [key]
Help Info:                       C-h i
Help Major mode:                 C-h m
Help tutorial:                   C-h t            :help howto
Undo:                            C-_              u
Redo:                            C-f              ^R
Mark cursor position:            C-@              m{a-zA-Z}
eXchange Mark and position:      C-x C-x
goto mark in current file:                       '{a-z}
goto mark in any file:                           '{A-Z}
copy region:                     M-w              {visual}y
kill region:                     C-w              {visual}d
Yank and keep buffer:            C-y              
Yank from kill buffer:           M-y              p
convert region to Upper:         C-x C-u          {visual}U
convert region to Lower:         C-x C-l          {visual}u
Insert special char:             C-q octalnum/keystroke   
^V decimal/keystroke
replace:                         M-x replace-string       :%s/aaa/bbb/g
replace regexp:                  M-x replace-regexp       :%s/aaa/bbb/g
query replace:                   M-%                      :%s/aaa/bbb/gc
query replace:                   M-x query-replace
query replace regexp:            M-x query-replace-regexp
Open file:                       C-x C-f          :r file
Save file:                       C-x C-s          :w
Save all buffers:                C-x s            :wa
Save as:                         C-x C-w file     :w file
Prompt for buffer:               C-x b
List buffers:                    C-x C-b          :buffers
Toggle read-only:                C-x C-q          :set ro
Prompt and kill buffer:          C-x k
Split vertical:                  C-x 2            :split
Split horizontal:                C-x 3            :vsplit (ver. 6)
Move to other window:            C-x o            ^Wp
Delete this window:              C-x 0            :q
Delete other window(s):          C-x 1            ^Wo
run shell in bg:                 M-x compile
kill shell run in bg:            M-x kill-compilation
run make:                                        :make Makefile
check error message:             C-x`             :echo errmsg
run shell and record:            M-x shell        :!script -a tmp
...clean BS, ...                                 :!col -b <tmp >record
...save/recall shell record:     C-x C-w record   :r record
run shell:                       M-! sh           :sh
run command:                     M-! cmd          :!cmd
run command and insert:          C-u M-! cmd      :r!cmd
run filter:                      M-| file         {visual}:w file
run filter and insert:           C-u M-| filter   {visual}:!filter
show option                                      :se[t] {option}?
reset option to default                          :se[t] {option}&
reset boolean option                             :se[t] no{option}
toggle boolean option                            :se[t] inv{option}
wrap text at column 72                           :se tw=72
do not wrap                                      :se tw=0
autoindent                                       :se ai
expand tab                                       :se et
specify comment (mail)                           :se comments=n:>,n:\|

run GDB                          M-x gdb                         
describe GDB mode                C-h m                           
step one line                    M-s
next line                        M-n
step one instruction (stepi)     M-i                             
finish current stack frame       C-c C-f                         
continue                         M-c                             
up arg frames                    M-u                             
down arg frames                  M-d                             
copy number from point, insert at the end 
C-x &                           
set break point                  C-x SPC

vim 에서 바 이 너 리 파일 을 편집 합 니 다.Vim 은 본래 이 때문에 설계 한 것 이 아니 기 때문에 약간의 한계 가 있다.읽 을 수 있어.
파일 을 가 져 와 서 문 자 를 바 꾸 고 저장 합 니 다.결국 당신 의 파일 은 그 글자 만 바 뀌 었 습 니 다.
다른 건 원래 그 거 랑 똑 같 아.
Vim 이 똑똑 한 팁 을 잘못 사용 하지 않도록 해 야 합 니 다. Vim 을 시작 할 때 "- b"인 자 를 추가 해 야 합 니 다.vim -b datafile
이 매개 변 수 는 'binary' 옵션 을 설정 하 였 습 니 다.그 역할 은 모든 의외 의 부작용 을 배제 하 는 것 이다.예 를 들 어 'textwidth'
텍스트 줄 이 제멋대로 조판 되 지 않도록 0 으로 설정 하 다.또한, 파일 은 일률적으로 유 닉 스 파일 형식 으로 읽 습 니 다.
바 이 너 리 모드 는 어떤 프로그램의 메시지 메 시 지 를 수정 하 는 데 사용 할 수 있다.어떤 문자 도 삽입 하거나 삭제 하지 않도록 조심 하 세 요. 프로그램 이 실 행 될 수 있 습 니 다.
문제 가 생기다."R"명령 으로 교체 모드 에 들 어 갑 니 다.
파일 안의 많은 문 자 는 표시 할 수 없습니다.Hex 형식 으로 값 표시 하기::set display=uhex
또한 커서 에 있 는 문자 값 을 명령 'ga' 로 표시 할 수도 있 습 니 다.커서 가 하나 에 있 을 때<Esc> 문자 에 있 을 때,
이 명령 의 출력 은 이렇게 보 입 니 다:<^[> 27, Hex 1b, Octal 033
파일 에 줄 바 꿈 이 그리 많 지 않 을 수도 있 습 니 다.'wrap' 옵션 을 닫 으 면 총람 효 과 를 얻 을 수 있 습 니 다::set nowrap
바이트 위치
파일 에 있 는 현재 바이트 위 치 를 발견 하려 면 이 명령 을 사용 하 십시오:g CTRL-G
출력 이 매우 지루 합 니 다:Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206
마지막 두 숫자 는 파일 의 현재 바이트 위치 와 파일 바이트 총수 입 니 다.이것 은 이미 'fileformat' 을 고려 했다.
옵션 을 선택 하면 줄 바 꿈 문자 바이트 가 다른 영향 을 줍 니 다.
파일 에 지정 한 바이트 로 이동 하려 면 "go"명령 을 사용 하 십시오.예 를 들 어 바이트 2345 로 이동 하려 면:2345go
XXD 사용
진정한 바 이 너 리 편집 기 는 두 가지 방식 으로 텍스트 를 표시 합 니 다. 바 이 너 리 와 16 진 형식 입 니 다.너 는 Vim 에서
이 효 과 는 변환 프로그램 'xx d' 를 통 해 이 루어 집 니 다.이 프로그램 은 Vim 과 함께 발표 되 었 다.
우선 이 파일 을 바 이 너 리 로 편집 합 니 다.vim -b datafile
현재 xxd 로 이 파일 을 16 진수 로 변환 합 니 다.:%!xxd
텍스트 가 이렇게 보 입 니 다:0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59.
이제 너 는 마음대로 이 텍스트 들 을 읽 고 편집 할 수 있다.Vim 은 이 정 보 를 일반 텍스트 로 취급 합 니 다.
16 진법 부분 을 수정 하면 문자 부분 을 표시 할 수 있 는 변 화 를 가 져 오지 않 고 반대로 도 마찬가지 입 니 다.
마지막 으로 다음 명령 으로 변환 합 니 다.:%!xxd -r
16 진법 부분의 수정 만 이 채 택 될 수 있다.오른쪽 에 텍스트 부분의 수정 을 표시 할 수 있 습 니 다. 무시 합 니 다.

좋은 웹페이지 즐겨찾기