Linux/기타

Linux VI 및 VIM 편집기 명령어

미나리나물 2013. 2. 4. 09:46
vi 명령어 일람

vi 시작 명령어

작업설명

vi filename
vi +18 filename
vi +/"문자열" fn
vi -r filename
view filename

파일 열기, 작성
18행으로 파일 열기
"문자열" 처음발생 단어부터 열기
손상된 파일 회복
읽기 전용으로 파일 열기

vi 커서 이동 명령어

작업설명

h(←)

j(↓)

k(↑)

l(→)

왼쪽으로 커서 이동

아래로 커서 이동

위로 커서 이동

오른쪽으로 커서 이동

w

e

b

Enter

Back space

Space Bar

^

$

H

M

L

숫자G

오른쪽  단어의  부분으로 커서 이동

오른쪽  단어의  부분으로 커서 이동

왼쪽  단어의  부분으로 커서 이동

  아래로 커서 이동

 문자 왼쪽으로 커서 이동

 문자 오른쪽으로 커서 이동

행의  왼쪽으로 커서 이동

행의  오른쪽으로 커서 이동

화면의  위로 이동

화면의 중간으로 이동

화면의  아래로 이동

숫자만큼 지정한 줄로 커서 이동

Ctrl + f

Ctrl + b

Ctrl + d

Ctrl + u

Ctrl + e

Ctrl + y

 화면 위로 이동

 화면 아래로 이동

 화면 위로 이동

 화면 아래로 이동

 줄씩 위로 이동

 줄씩 아래로 이동

문자, 삽입 명령어

작업설명

a              (종료:ESC)

A              (종료:ESC)

i                (종료:ESC)

I                (종료:ESC)

o              (종료:ESC)

O              (종료:ESC)

커서 오른쪽에 문자 삽입

커서 오른쪽, 행의 끝에 문자 삽입

커서 왼쪽에 문자 삽입

커서 왼쪽, 행의 처음에 문자 삽입

커서 아래에  삽입

커서 위에  삽입

텍스트 변경 명령어

작업설명

cw             (종료:ESC)

cc              (종료:ESC)

C              (종료:ESC)

s              (종료:ESC)

S              (종료:ESC)

r

r-Enter

J

xp

~

u

U

:u

.

단어 변경

 변경

커서 오른쪽의  변경

커서가 위치한 문자열 대체

커서가 위치한 라인의 문자열 대체

커서 위치 문자를 다른 문자로 대체

 분리

현재 행과 아래  결합

커서 위치 문자와 오른쪽 문자 교환

문자형(,소문자) 변경

이전 명령 취소

 변경 사항 취소

이전의 최종  취소

이전 최종 명령 반복

텍스트 삭제 명령어

작업설명

x

5x

dw

dd

5dd

db

D

:5,10d

커서가 있는 문자 삭제

커서가 있는 위치부터 5개의 문자를 삭제

현재 커서가 있는 한단어 삭제

커서가 있는 라인 삭제

커서가 있는 라인부터 5개의 라인 삭제

커서의 위치에서 꺼꾸로 한단어 삭제

커서 오른쪽  삭제

5-10번째  삭제

복사  이동 명령어

작업설명

yy

Y

P

p

:1,2 co 3

:4,5 m 6

 yank 또는 복사

 yank 또는 복사

yank되거나 삭제된  현재  위에 삽입

yank되거나 삭제된  현재  아래에 삽입

1-2행을 3 다음으로 복사

4-5행을 6 위로 이동

 번호 설정 명령어

작업설명

:set nu

:set nonu

 번호 표시

 번호 숨기기

 찾기 명령어

작업설명

G

21G

Ctrl + G

파일의 마지막 행으로 가기

파일의 21번째 행으로 가기

현재의 filename line수를 알려줌

탐색  대체 명령어

작업설명

/검색할 문자열/

?검색할 문자열?

n

N

:g/search-string/s//replace-string/gc

:s/str/rep/

:1,.s/str/rep/

:%s/str/rep/g

:.$/aaa/bbb/

오른쪽 아래 방향으로 문자열 검색

왼쪽  방향으로 문자열 검색

문자열의 다음으로 계속 검색

문자열의 이전으로 계속 검색

 발생 탐색  확인하고 대체

현재 행의 str rep 대체

1부터 현재 행의 str rep 대체

파일 전체 str rep 전부 대체

커서에서 화일의 끝까지 있는 모든 aaa bbb 대체

화면정리 명령어

작업설명

Ctrl + l

불필요한 화면정리  다시 표시

파일 명령어

작업설명

:r filename

:34 r filename

커서 다음에 파일 삽입

파일을 34번째  다음에 삽입

보관  종료 명령어

작업설명

:w

:w filename

:wq

ZZ

:q!

q

e!

변경사항 보관

버퍼를 파일로 보관

변경사항 보관  vi 종료

변경사항 보관  vi 종료

변경사항 보관하지 않고 종료

수정한 파일을 저장하지 않고 vi 종료

수정한 것을 무시하고 다시 편집상태로




" =============================================================================

" 구식 vi 와 동일하게 작동할 것인가에 대한 옵션이다. 구식 vi와 동일하게

" 작동하도록 설정된다면 많은 편리한 기능을 사용할수 없을 것이다.

" =============================================================================

set nocompatible

 

" =============================================================================

" vimdiff일때 공백을 무시

" =============================================================================

set diffopt+=iwhite

 

" =============================================================================

" 인코딩에 대한 설정이다. 윈도우와 유닉스가 틀리다.

" =============================================================================

if has("unix")

set encoding=euc-kr

elseif has ("win32")

set encoding=cp949

endif

" =============================================================================

" 현재 디렉토리에 .vimrc 가 있을 경우 ~/.vimrc 를 읽어 초기화후에 현재

" 디렉토리에 .vimrc를 더불어 읽어 옵션을 다시 설정 한다.

" ./.vimrc 를 읽어 들이기 위함 exrc 가 더 나중에 실행 되는 것 같음

" =============================================================================

set exrc

au BufNewFile,BufRead *.c,*.h,*.java,*.pc,*.cpp,*.jsp,*.php,*.ph set exrc

" exrc 가 안되서 임시 방편

if has("unix")

au BufNewFile,BufRead *.c,*.h,*.java,*.pc,*.cpp,*.jsp,*.php,*.ph

\ if filereadable(".vimrc") | so .vimrc | endif

elseif has("win32")

au BufNewFile,BufRead *.c,*.h,*.java,*.cpp,*.jsp,*.php,*.ph

\ if filereadable("_vimrc") | so _vimrc | endif

endif

 

" =============================================================================

" 파일에 대한 인코딩을 설정한다. encoding, fileencoding, fileencodings 의 상관

" 관계를 정확히 알지 못하겠다.

" =============================================================================

if has("unix")

set fileencoding=euc-kr

elseif has ("win32")

set fileencoding=cp949

endif

 

" =============================================================================

" 파일의 인코딩을 설정한다.

" =============================================================================

"set fileencodings=euc-kr

set fileencodings=euc-kr,ucs-bom,utf-8,latin1

 

" =============================================================================

" 파일 편집시 undo 할수 있는 최대 횟수를 설정한다.

" =============================================================================

set history=1000

 

" =============================================================================

" search 시 찾는 단어를 하이라이팅 해 준다.

" =============================================================================

set hlsearch

 

" =============================================================================

" 찾기, 바꾸기 등에서 대소문자 구분을 하지 않는다.

" =============================================================================

set ignorecase

 

" =============================================================================

" MS 윈도우에서 한영 전환 패치가 되었을때 insert 모드나 command 모드로 들어

" 갈때 영어로 입력 시작하게 한다. 아래는 기본 값이다.

" =============================================================================

"set noimdisable

"set noimcmdline

 

" =============================================================================

" search(/) 영어로 입력이 시작 되게 한다.

" =============================================================================

set iminsert=0

set imsearch=0

 

" =============================================================================

" 줄번호를 보여 준다.

" =============================================================================

"set number

 

" =============================================================================

" >>, << command shift 할 크기를 정해준다 통상 와 동일하게 설정 하면 된다.

" =============================================================================

set shiftwidth=4

 

" =============================================================================

" 닫는 괄호")", 브라켓"}"을 입력시 매칭되는 여는 괄호, 브라켓에 잠시 커서가

" 위치했다가 다시 제자리로 돌아 온다.

" =============================================================================

set showmatch

 

" =============================================================================

"

" =============================================================================

set smarttab

 

" =============================================================================

"

" =============================================================================

set smartindent

 

" =============================================================================

"

" =============================================================================

set softtabstop=4

 

" =============================================================================

" 각 파일의 성격(?)에 맞게 색깔로 보여 준다.

" =============================================================================

syntax on

if has("terminfo")

let &t_Co=8

let &t_Sf="\e[3%p1%dm"

let &t_Sb="\e[4%p1%dm"

else

let &t_Co=8

let &t_Sf="\e[3%dm"

let &t_Sb="\e[4%dm"

endif

 

colorscheme desert

hi Type term=NONE ctermfg=2

hi PreProc term=NONE ctermfg=10

hi LineNr term=NONE ctermfg=6

hi Constant term=NONE ctermfg=14

 

" 오라클 proc 설정

au BufNewFile,BufRead *.pc so /u3204/app/credt/batch/src/kcb/proc.vim

 

set path=.,../include,/u3204/app/common/include,/usr/include,,

 

"

" =============================================================================

" 탭으로 사용할 크기를 정한다. tabstop 4로 둘경우 기존의 많은 소스들의

" indentation 이 깨어 지기 때문에 tabstop8로 놓고 shiftwidth4로 놓으면

" 보는 소스는 tabstop8로 볼수 있고 직접 작성하는 소스에 indentation4

" 맞출수가 있다. 요즘은 tabstop4로 가는 추세이다.

" =============================================================================

set tabstop=4

 

" =============================================================================

" search 시 파일의 맨끝까지 다 찾고 난뒤 다시 파일의 처음으로 돌아가서 찾을수

" 있게 해주는 것이다. 기본값은 on 이다.

" =============================================================================

set nowrapscan

 

" =============================================================================

" 색깔 설정

" 윈도우의 경우는 MS, MSB라는 새로운 두가지 색깔을 정의 해서 사용한다.

" =============================================================================

if has("unix")

hi Folded ctermbg=Brown ctermfg=Black

hi FoldColumn ctermfg=DarkBlue ctermbg=NONE

hi LineNr ctermfg=White

hi DiffAdd term=bold ctermbg=Brown

"" bold off

hi NonText cterm=NONE

hi ErrorMsg cterm=NONE

hi ModeMsg cterm=NONE

hi StatusLine term=REVERSE cterm=NONE ctermfg=3 ctermbg=black

hi VisualNOS term=NONE cterm=NONE

hi DiffDelete term=NONE cterm=NONE

hi DiffText cterm=NONE

hi Error cterm=NONE

 

hi Comment ctermbg=NONE ctermfg=darkgreen

hi Constant ctermfg=darkyellow

hi Statement ctermbg=NONE ctermfg=brown

hi PreProc ctermbg=NONE ctermfg=red

hi type ctermbg=NONE ctermfg=brown

hi special ctermbg=NONE ctermfg=magenta

 

elseif has ("win32")

" MS 윈도우 버튼 기본 색깔인 회색으로 지정

"212 208 200 MS #D4D0C8

"199 199 199 MSB #C7C7C7

"hi Normal guibg=#D4D0C8 guifg=Black

"hi NonText guibg=#C7C7C7 guifg=Black gui=NONE

"hi Visual guibg=Black guifg=grey69

"hi LineNr guibg=#C7C7C7 guifg=Blue

"hi Folded guibg=DarkYellow guifg=Black

"hi FoldColumn guibg=#C7C7C7 guifg=Blue

"hi StatusLine guibg=Yellow guifg=black gui=reverse

"hi Cursor guibg=Black guifg=white

"hi CursorIM guibg=Purple guifg=Black

""" bold off

"hi MoreMsg gui=NONE

"hi ModeMsg gui=NONE

"hi Question gui=NONE

"hi Title gui=NONE

"hi VisualNOS gui=NONE

"hi DiffText gui=NONE

"hi DiffDelete gui=NONE

"hi Statement gui=NONE

"hi Type gui=NONE

endif


□ VI 기본

   - 명령모드, 확장모드(:), 입력모드 

   - 설정파일 .exrc (사용자 홈디렉토리에 생성하면 됨.)

   - 설정 내용 보기 vi의 확장 모드에서 set all