본문으로 바로가기


VI 프로그램의 위치 

$ which vi

/usr/bin/vi

/usr/ucb/vi

/bin/vi


VI를 이용한 파일 열기

# vi

:e test.txt

# vi test.txt


편집모드

 i - 커서앞에 텍스트 삽입 

 a - 커서뒤에 텍스트 삽입

 o - 현재 행 아래에 텍스트 삽입


텍스트 교체

 r - 한 글자만 교체

 R - 커서가 있는 자리부터 여러문자 교체



커서이동

 ←, h, <del>

 ↓, j

 ↑, k

 →, l


신속이동

 w - 오른쪽으로 특수문자 혹은 한단어의 처음으로 이동

 b - 왼쪽으로 특수문자 혹은 한단어의 처음으로 이동

 W - 오른쪽으로 한단어의 처음으로 이동

 B - 왼쪽으로 한단어의 처음으로 이동


한 행 안에서의 이동

0 (숫자) - 행의 맨 처음으로 이동

$ - 행의 맨 마지막으로 이동


페이지 이동

 G - 문서의 맨 끝 행으로 이동

 nG - nqjsWo 행으로 이동

 C-f - 한페이지 아래로 이동

 C-b - 한페이지 위로 이동


삭제명령

 dw - 한 단어 삭제

 dd - 한 줄 삭제

 D - 커서부터 행 끝까지 삭제

 x - 한 글자 삭제


숫자와 명령의 조합 예제

 10j - 10줄 위로 이동

 10x - 10글자 삭제

 5dd - 5줄 삭제


잘라내기 & 붙여넣기

 x, dw, dd, D → p - 커서 뒤에 임시 버퍼내용 추가

 x, dw, dd, D → P - 커서 앞에 임시 버퍼내용 추가


텍스트 복사

 yw - 한단어 복사 → p - 붙여넣기

 y$ - 커서부터 행끝까지 복사 → p - 붙여넣기

 yy - 한줄 모두 복사 → p - 붙여넣기


텍스트 탐색

 / - 전방 탐색

 ? - 후방 탐색

 n - 같은방향으로 탐색 계속

 N - 반대방향 탐색 계속

 /  - 전방탐색 계속

 ?  - 후방탐색 계속


행 번호 붙이기

 :set nu

 :set nonu - 번호 없애기


특정 행 번호로 이동

:1   - 1번째 행으로 이동

:$   - 마지막 행으로 이동

:$= - 현재 문서의 총 줄(행)수

:.=  - 현재위치의 행번호


범위 지정

:1,10d - 1번행부터 10번행가지 삭제(d)

:.,$d - 현재부터 마지막 행까지 삭제

:0,$-4d - 파일의 맨처음(0- 가상번호)부터 끝까지 삭제하되 4는 제외

:.-1,.+1y(:.-,.+y)(:-,+y) - 현재 행을 기준으로 아래위 3행을 복사

:0,$y - :%y - 모든 행 복사


일부분 저장

:1,.w part1.txt - 1행부터 현재 행까지 part1.txt 라는 이름으로 저장

:1,.w >>part.txt - 1행부터 현재 행까지를 part.txt 파일에 추가


다른파일 내용 (읽기) 삽입

:r insert.txt - 커서위치 아래에 insert.txt  파일을 추가

1r insert.txt - 

0r insert.txt - 


텍스트 검색 및 교체

:범위s/찾는문자열/교체할문자열/옵션

:%s/girl/woman/g (※ g - global)

:0,.s/^/>> /g - 맨 처음부터 현재행에 대하여 행의 맨 앞에 >>를 붙임 (※ ^ 는 가상의 맨 앞)

:.-3,.+5s/$/<</g - 주어진 범위의 각 행 끝에 << 문자 추가 (※ $는 가상의 맨 마지막)

※ .- 현재 행 ^ - 가상의 맨 처음 $ - 가상의 맨 처음 % 현 문서 전체


텍스트 검색 및 치환

/찾는문자열 

- 파일내에서 찾는 문자열을 찾아 커서가 이동한다.(아래방향으로)

?찾는문자열 

- 파일내에서 찾는 문자열을 찾아 커서가 이동한다.(위로 향하여)

- "/찾는문자열"을 입력후 다음찾기할때(아래방향) 

- "/찾는문자열"을 입력후 다음찾기할때(위방향)


:s/찾는문자열/치환문자열

- 현재 커서가 놓여 있는 행에서 첫번째로 검색된 특정문자열 바꾸기

:1,10s/찾는문자열/치환문자열

- 1행부터 10행사이에 걸쳐 첫번째로 검색된 특정문자열 바꾸기

:%s/찾는문자열/치환문자열 

- 모든행에 걸쳐 첫번째로 검색된 특정문자열을 바꾸기


 :%s/\/usr/\/usr/local/g - /usr를 찾아서 /usr/local 로 교체

※ \ (역 슬래쉬) 특수문자(/)의 해석방지

특수문자가 들어간 문자열의 교체



외부 유닉스 명령어 실행

 :!명령

 :sh - 

 :r :ls - 유닉스 명령의 실행 결과 화면을 현재 편집중인 내용에 불러들임


필터와 명령

 :%!tr [a-z][A-Z] - 전체 텍스트의 영문자를 대문자로 치환

 :%!sort - 정렬



명령모드에서 벗어나 편집모드로 진입하기(입력모드)

i : 커서가 놓여 있는 위치의 문자를 밀어내고 삽입된다.

a : 커서가 놓여 있는 위치의 문자뒤에 삽입된다.

o (소문자 o) : 현재행의 아래행을 밀어내고 입력모드로 전환된다.

O (대문자 O) : 현재행을 한줄 아래로 밀어내고 입력모드로 전환된다.


입력모드 와 삽입모드를 습관적으로 변환하기

입력모드 : ESC - 명령모드(이동,삭제,검색,치환,저장,종료,열기)

명령모드 : i,a,o,O - 삽입모드(입력) 


VI 방식의 종료와 저장, 새이름으로 저장

:q - 저장하지 않고 vi 종료하기

:q! - 강제 종료

:w - 현재내용을 저장

:w! - 읽기전용인 파일을 수정후 강제로 저장할때

:wq - 저장하고 종료

:wq! - 읽기전용인 파일을 수정후 강제로 저장하고 종료하기

:w 새파일명 - 새이름으로 저장


VI 환경설정 

:set number : 행번호 보이게

:set nonumber : 행번호 안보이게

:set autoindent : 들여쓰기 설정

:set noautoindent : 들여쓰기 제거

:set list : 문단,조판부호 보기

:set nolist : 문단,조판부호 안보이게

:set window=30 : 한 화면당 행의 갯수 30개로 지정

:set ignorecase : 검색시 대소문자 구별 제거

:set noignorecase : 검색시 대소문자 구별

:set all : 현재 설정된 vi 모든 설정값 보기

 


VI 환경설정 변경 방법


먼저 아래 alias를 추가해준다.

alias vi='vim'


그 후, 홈디렉터리 밑에 " .vimrc " 파일 생성 후 아래 내용 추가 해 준다.

Vim 편집기에 대한 ColorScheme 테마는 여러가지가 있다.


--------------------- .vimrc

syntax on

syntax enable

set tabstop=4

set shiftwidth=4

set autoindent

set background=dark

set cindent

set showmatch

set title

set textwidth=79

set smartindent

set autoindent

set ts=4

colo koehler 

highlight Comment term=bold cterm=bold








'IT소식 > IT 공부' 카테고리의 다른 글

OSI 7 Layer 개념  (380) 2015.08.02
PE Header / 파일 시그니처 모음  (765) 2015.07.30
리눅스기초/ 간단한 명령어들  (957) 2015.07.22
리눅스기초/ 네트워크 수동설정  (1126) 2015.07.22
리눅스 공부할때 유용한 사이트  (1113) 2015.07.21