728x90

 

Command mode(명령 모드) - vi의 기본모드이며 vi를 실행하면 뜨는 기본화면이다.

Edit mode(입력 모드) - a, i, o등을 누르면 이동하는 모드이며 내용 입력 또는 C코딩이 가능하다.(오른쪽 아래에 --Insert-- 가 뜬다.)

Last line mode(실행 모드) - 입력모드에서 저장종료, 강제종료 등의 명령어를 입력하는 모드이다.(:, /, ? 등의 명령으로 동작)

<vi 에디터 명령어>

1. vi 시작 명령어

명령어

명령어 동작 설명

vi [file name]

파일 열기, 작성

vi +18 [file name]

18행으로 파일 열기

vi +/"문자열" fn

"문자열"의 처음 발생 단어부터 열기

vi -r [file name]

손상된 파일 회복

view [file name]

읽기 전용으로 파일 열기

2. vi 커서 이동 명령어

명령어

명령어 동작 설명

h(←)

왼쪽으로 커서 이동

j(↓)

아래로 커서 이동

k(↑)

위로 커서 이동

l(→)

오른쪽으로 커서 이동

w

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

e

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

b

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

Enter

한 행 아래로 커서 이동

Back space

한 문자 왼쪽으로 커서 이동

Space bar

한 문자 오른쪽으로 커서 이동

^

행의 맨 왼쪽으로 커서 이동

$

행의 맨 오른쪽으로 커서 이동

H

화면의 맨 위로 이동

M

화면의 중간으로 이동

L

화면의 맨 아래로 이동

"숫자"G

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

3. 문자, 행 삽입 명령어

명령어

명령어 동작 설명

a (종료 : esc)

커서 오른쪽에 문자 삽입

A (종료 : esc)

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

i (종료 : esc)

커서 왼쪽에 문자 삽입

I (종료 : esc)

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

o (종료 : esc)

커서 아래에 행 삽입

O (종료 : esc)

커서 위에 행 삽입

4. 텍스트 변경 명령어

명령어

명령어 동작 설명

cw (종료 : esc)

단어 변경

cc (종료 : esc)

행 변경

C (종료 : esc)

커서 오른쪽의 행 변경

s (종료 : esc)

커서가 위치한 문자열 대체

S (종료 : esc)

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

r

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

r-Enter

행 분리

J

현재 행과 아래 행 결합

xp

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

~

문자형(, 소문자) 변경

u

이전 명령 취소

U

행 변경 사항 취소

:u

이전의 최종 행 취소

.

이전 최종 명령 반복

5. 택스트 삭제 명령어

명령어

명령어 동작 설명

x

커서가 있는 문자 삭제

5x

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

dw

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

dd

커서가 있는 라인 삭제

5dd

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

db

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

D

커서 오른쪽 행 삭제

:5,10d

5-10번째 행 삭제

6. 복사 및 이동 명령어

명령어

명령어 동작 설명

yy

yank 또는 복사

Y

yank 또는 복사

P

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

p

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

:1,2 co 3

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

:4,5 m 6

4-5행을 6행 위로 이동

7. 행 번호 설정 명령어

명령어

명령어 동작 설명

:set nu

행 번호 표시

:set nonu

행 번호 숨기기

8. 행 찾기 명령어

명령어

명령어 동작 설명

G

파일의 마지막 행으로 가기

21G

파일의 21번째 행으로 가기

ctrl + G

현재의 filename line수를 알려줌

9. 탐색 및 대체 명령어

명령어

명령어 동작 설명

/검색할 문자열/

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

?검색할 문자열?

왼쪽 위 방향으로 문자열 검색

n

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

N

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

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

각 발생 탐색 후 확인하고 대체

string/gc

:s/str/rep/

현재 행의 str rep로 대체

:1,.s/str/rep/

1부터 현재 행의 str rep로 대체 파일

:%s/str/rep/g

전체 str rep로 전부 대체

:.$/aaa/bbb/

커서의 위치로부터 파일의 끝까지 있는 모든 aaa bbb로 대체

:! [file name]

vi열린 상태에서 외부명령어 실행

10. 화면정리 명령어

명령어

명령어 동작 설명

ctrl + I

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

11. 파일 명령어

명령어

명령어 동작 설명

:r [file name]

커서 다음에 파일 삽입

:34 r [file name]

파일을 34번째 행 다음에 삽입

:e [file name]

파일 열기

12. 보관 및 종료 명령어

명령어

명령어 동작 설명

:w

변경사항 저장

:w [file name]

버퍼를 파일로 보관

:wq

변경사항 보관 후 vi 종료

:ZZ

변경사항 보관 후 vi 종료

:q!

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

:q

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

:e!

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

 

 

[출처] [Linux] vi 필수 명령어 모음|작성자 Specialist

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

톰켓설치  (0) 2013.09.30
Linux java 설치  (0) 2013.09.30
find와 grep을 활용한 검색  (0) 2012.08.27
linux ftp client 사용법  (0) 2012.04.10
VI Editor 사용법  (0) 2012.03.23
728x90
Vi Editer 사용법System / Linux

2011/06/22 15:12

복사http://blog.naver.com/blueskyhom/90116331799

<<명령 모드에서 입력 모드로 전환하기 위한 키>> ㅣ <<명령 모드에서 커서를 이동하기 위한 키>>

i = 현재 커서의 위치로부터 입력 ㅣ h = 커서를 왼쪽으로 한 칸 이동

I = 현재 커서 행의 맨 압에서부터 입력 ㅣ l = 커서를 오른쪽으로 한칸 이동

ㅣ j = 커서를 아래로 한칸 이동

a = 현재 커서 위치의 다음칸 부터 입력 ㅣ k = 커서를 위로 한칸 이동

A = 현재 커서 행의 맨 마지막부터 입력 ㅣ

ㅣ ctrl+F = 다음 화면으로 이동(Page Down키)

o = 현재 커서의 다음 행에 입력 ㅣ ctrl+B = 이전 화면으로 이동(Page Up키)

O = 현재 커서의 이전 행에 입력 ㅣ ^ = 현재 행의 처음으로 이동 (Home키)

ㅣ $ = 현재 행의 마지막으로 이동 (End키)

s = 현재 커서 위치의 한 글자를 지우고 입력 ㅣ

S = 현재 커서의 한 행을 지우고 입력 ㅣ gg = 제일 첫 행으로 이동

ㅣ G = 제일 마지막 행으로 이동

----------------------------------------------------------------------------------------------------------------------

<<명령 모드에서 삭제, 복사, 붙혀넣기 관련 키>> ㅣ <<명령 모드에서 창 분할 관련 키>

x = 현재 커서의 위치한 글자 삭제 (Del) ㅣ ctrl+w s = 현재 파일을 두개의 수평창으로 나눔

X = 현재 커서의 위치한 앞 글자 삭제 (Backspace) ㅣ ctrl+w v = 현재 파일의 두개의 수직창로 나눔

d$ = 현재 커서에서 라인끝 까지 삭제, 잘라내기 ㅣ ctrl+w w = 나뉘어진 창간의 이동

dd = 현재 커서 행 삭제, 잘라내기 ㅣ

n dd = 현재 커서 부터 숫자(n)만큼의 행 삭제 ㅣ ctrl+w = = 창의크기가 균등하게 분할d

d + 숫자 + 방향기 : 숫자 만큼 방향쪽으로 잘라내기 ㅣ

y$ = 현재 커서에서 라인끝 까지 복사 ㅣ

yy = 현재 커서가 있는 행을 복사 ㅣ ctrl+w q = 현재 창 닫기

n yy = 현재 커서가 있는 행부터 숫자(n)만큼 복사 ㅣ

y + 숫자 + 방향기 : 숫자 만큼 방향쪽으로 복사 ㅣ

p = 복사행 내용을 현재 행 이후에 붙혀 넣기 ㅣ

P = 복사행 내용을 현재 행 이전에 붙혀 넣기 ㅣ

----------------------------------------------------------------------------------------------------------------------

<<그 밖의 명령 관련 키>> ㅣ

ㅣctrl + ] 함수의 정의로 이동

:/ 문자열 (Enter) = 현재 열린 파일의 문자열 찾기 ㅣctrl + t 원래의 위치로 이동

n = 찾는 문자 중에서 다음 문자로 이동 ㅣ ctrl + n 자동완정

:e FileName = 현재 창에 다른 파일을 열기 ㅣ

R 하고 문자입력 ESC 후 원하는 위치에 .을 하면입력한 문자열을 계속 입력 할수 있다.

grep -rn "변수명, 함수명" -> 하위의 파일중에 변수명, 함수명이 사용된곳을 찾아 준다.

ctags -R 하위 폴더를 포함하여 tags을 생성하여 cnt+] , cnt + t를 이용하여 코드 분석용이

1. vi 시작하기

vi : vi를 시작한다.

vi [파일] : vi를 시작하여 지정한 [파일]이 존재하면 그 파일을 열고, 존재하지 않으면 지정한 파일 이름으로 새로운 파일을 만

든다.

vi -R [파일] : 지정한 파일을 읽기 전용으로 불러들인다.

2. vi 종료하기

:q : 아무런 글을 입력하지 않았을 때, vi를 종료한다. 만약 글을 입력하였다면 종료되지 않는다.

:wq : 작성한 글을 저장하고 vi를 종료한다.

:q! : 작성한 글을 저장하지 않고 vi를 종료한다.


※ 종료하기를 포함한 앞으로 나오는 모든 vi 명령어들은 특별한 언급이 없는 이상, 위 그림에서 '명령대기상태'를 기준으로 입력해야 하는 명령어를 의미한다.

3. 저장하기

:w : 작성한 글을 저장한다.

:w [파일] : 지정한 파일로 작성한 글을 저장한다.

:w >> [파일] : 지정한 파일의 뒷부분에 작성한 글을 덧붙인다.

:w! : 읽기 전용으로 열었을 경우에 강제로 저장한다.

:w %.new : 현재 파일 이름에 .new를 붙여서 새로운 파일로 저장한다. (.new 자리에 다른 문자열이 올 수 있다.)

:50,$ w [파일] : 50줄부터 끝줄까지 [파일] 이름으로 저장한다.

:.,100 w [파일] : 현재 줄에서부터 100줄까지 [파일] 이름으로 저장한다.

:1,10 w [파일] : 1줄부터 10줄까지 파일 이름으로 저장한다.

:50,$ w >> [파일] : [숫자]번째 줄부터 끝줄까지 [파일]의 뒷부분에 저장한다.


=> [숫자 or . or $], [숫자 or . or $] w [파일] : [숫자]는 [숫자]번째 줄을, '.'은 '현재줄', '$'는 '끝줄'을 의미한다. 첫번째가 의미하는 부분부터 두번째가 의미하는 부분까지 [파일] 이름으로 저장한다.

4. 커서이동

vi를 처음 사용하는 경우에 당황해하는 부분 중 하나가 커서를 마음대로 움직이지 못한다는 것이다. 특정 설정을 해주지 않으면 윈도우에서처럼 마우스로 찍는 곳에 커서가 위치하지 않기 때문이다. 여기서는 기본 설정에서의 vi 커서 이동을 정리하였다. 커서 이동은 명령모드에서 가능하다.

h : 커서를 한 칸 왼쪽으로 이동한다 (좌).

j : 커서를 한 줄 아래로 이동한다 (하).

k : 커서를 한 줄 위로 이동한다 (상).

l, Space : 커서를 한 칸 오른쪽으로 이동한다 (우).

Backspace : 커서를 한 칸 왼쪽으로 이동한다.

- : 커서를 윗줄의 처음으로 이동한다.

+ : 커서를 다음 줄의 처음으로 이동한다.

0 : 커서를 현재 줄의 맨 앞으로 이동한다.

$ : 커서를 현재 줄의 맨 뒤로 이동한다.

^ : 커서를 현재 줄의 첫 글자로 이동한다 (공백이나 탭은 무시한다).

w, W : 커서를 다음 단어의 첫 글자로 이동한다.

e, E : 커서를 다음 단어의 끝 글자로 이동한다.

b, B : 커서를 이전 단어의 첫 글자로 이동한다.

( : 커서를 앞의 문장 처음으로 이동한다.

) : 커서를 뒤 문장 처음으로 이동한다.

{ : 커서를 앞 문단의 처음으로 이동한다.

} : 커서를 뒷 문단의 처음으로 이동한다.

H : 커서를 화면 맨 위로 이동한다.

M : 커서를 화면 중간으로 이동한다.

L : 커서를 화면 맨 아래로 이동한다.

<Ctrl> + F : 커서를 한 화면 아래로 이동한다.

<Ctrl> + B : 커서를 한 화면 위로 이동한다.

<Ctrl> + D : 커서를 반 화면 아래로 이동한다.

<Ctrl> + U : 커서를 반 화면 위로 이동한다.

[N] + <Ctrl> + F : 커서를 한 [N]화면 아래로 이동한다. (N은 양의 정수)

[N] + <Ctrl> + B : 커서를 한 [N]화면 위로 이동한다.

[N] + <Ctrl> + D : 커서를 [N] 줄 아래로 이동한다.

[N] + <Ctrl> + U : 커서를 [N] 줄 위로 이동한다.

5. 입력하기

i : 현재 커서 위치에서 글을 입력한다.

a : 현재 커서 다음부터 글을 입력한다.

o : 현재 커서가 있는 아래 줄부터 글을 입력한다.

S : 현재 커서가 있는 위치의 한 글자를 삭제하고 거기에서부터 글을 입력한다.

I : 현재 커서가 있는 줄의 맨 앞에서부터 글을 입력한다.

A : 현재 커서가 있는 줄의 맨 뒤에서부터 글을 입력한다.

O : 현재 커서가 있는 줄의 맨 위에서부터 글을 입력한다.

R : 현재 커서가 있는 곳에서부터 겹쳐쓰기(덮어쓰기)로 입력한다.

6. 삭제하기

vi에서는 윈도우에서처럼 BackSpace나 Delete 키만으로 삭제를 모두 해결하지 않는다.

x : 커서가 위치한 곳의 문자를 삭제한다.

X : 커서가 위치한 곳에서 왼쪽 문자를 삭제한다.

D : 커서가 위치한 곳에서 오른쪽 끝까지 삭제한다.

dd : 커서가 위치한 줄 전체를 삭제한다.

dG : 커서가 위치한 곳에서부터 파일의 끝까지 삭제한다.

d1G : 커서가 위치한 곳에서부터 파일의 앞까지 삭제한다.

:[N]d : N번째 줄을 삭제한다. (N은 양의 정수)

:[N], [M]d : N번째 줄부터 M번째 줄까지 삭제한다. (M은 N보다 큰 양의 정수)

[N] + dd : 커서가 위치한 곳에서부터 N 줄을 삭제한다.

7. 붙이기

p : 마지막으로 지워진 내용을 커서가 위치한 곳 뒤, 아래에 삽입한다.

P : 마지막으로 지워진 내용을 커서가 위치한 곳 앞, 위에 삽입한다.

8. 내용 고치기

:[N]co[M] : [N]줄을 [M]줄 밑에 복사해서 붙인다.

:[N], [M]col : [N]줄부터 [M]줄까지 한 줄 밑에 복사해서 붙인다.

[N]yy, [N]Y : 커서 위치에서 [N]줄만큼을 복사한다.

[N]yw : 커서 위치에서 [N]단어만큼을 복사한다.

:[A]m[B] : [A]줄을 [B]줄 밑으로 이동한다. (A, B는 양의 정수)

:[A], [B]m[C] : [A]줄부터 [B]줄까지 [C]줄 밑으로 이동한다.

:r : 마지막으로 저장되었던 파일의 전체내용이 파일 아래에 덧붙여진다.

9. 치환하기

:s/[원래내용]/[고칠내용] : 커서가 위치한 줄에서 [원래내용]을 [고칠내용]으로 치환한다.

:[N]s/[원래내용]/[고칠내용] : 지정한 [N]줄에서 [원래내용]을 [고칠내용]으로 치환한다.

:[N],[M]s/[원래내용]/[고칠내용] : 지정한 [N]줄에서 [M]줄까지의 범위 내에서 [원래내용]을 [고칠내용]으로 치환한다.

:%s/[원래내용]/[고칠내용] : 파일 전체에서 [원래내용]을 [고칠내용]으로 치환한다.

:C : 커서 위치에서 행의 끝까지를 다른 문자열로 변경한다.

:cc : 커서 행을 다른 문자열로 변경한다.

:R : 커서 위치에서 ESC를 입력한 곳까지 덮어쓴다.

10. 검색하기

검색명령은 파일의 끝에 도달하면 다시 처음부터 시작한다.

/[단어] : 현재 커서 위치에서 아래로 지정한 [단어]를 찾는다.

?[단어] : 현재 커서 위치에서 위로 지정한 [단어]를 찾는다.

/ : 전에 검색했던 단어를 아래로 반복해서 찾는다.

? : 전에 검색했던 단어를 위로 반복해서 찾는다.

n : /나 ?를 같은 방향으로 반복한다.

N : /나 ?를 반대 방향으로 반복한다.

11. 약어 사용하기

긴 단어나 문장을 짧은 단어로 쓸 수 있다.

:ab [short] [long] : [short]만 쓰면 자동으로 [long]의 내용으로 바뀐다. [long]은 단어는 물론 문장이 될 수도 있다.

:ab : 현재까지 지정된 약어 목록을 보여준다.

:una [short] : [short]를 약어에서 해제한다.

12. 화면보기

^l : 화면을 다시 뿌려준다.

:set number , se nu : 파일의 각 라인별로 번호를 붙여준다.

:set nonumber , se nonu : 파일의 각 라인별 번호를 삭제한다.

:set autoindent , se ai : 자동으로 들여쓰기를 한다.

:set noautoindent , se noai : 자동 들여쓰기를 취소한다.

:set list : 탭은 ^l로, 문장의 끝은 $로 표시한다.

:set nolist : list값을 취소한다.

:set tabstop=n ,se ts=n : 탭의 크기를 n으로 지정한다. 기본은 8이다.

13. 줄번호

[N]G, :[N] : [N]번째 줄로 바로 간다. (ex. 1G : 1번째 줄로 간다)

G : 마지막 줄로 간다.

:map [q] G : [q]가 G를 실행한 결과와 같도록 매크로를 정의한다.

14. 파일 바꾸기

:e [파일] : 현재 작성하고 있던 파일에서 지정한 파일로 바뀌어진다. 단, 작성하고 있던 파일이 저장되어 있지 않으면 바뀌지

않는다.

:e! [파일] : 현재 작성하고 있던 파일이 저장이 되지 않았더라도 지정한 파일로 바뀐다.

15. 데이터 읽기

:[N]r [파일] : [N]번째 줄에 지정한 파일의 내용이 삽입된다.

:r [파일] : 현재 커서가 위치한 곳 다음 줄에 지정한 파일의 내용이 삽입된다.

:[N]r ![명령어] : 명령어의 결과가 [N]번째 줄 다음에 삽입된다.

:r ![명령어] : 명령어의 결과가 현재 커서가 위치한 다음 줄에 삽입된다.

16. 정규 표현식을 위한 특수 기호

. : 새로운 줄을 제외한 모든 단일 문자와 대응한다.

* : 0 또는 그 이상의 선행 문자와 대응한다.

^ : 줄의 시작과 대응한다.

$ : 줄의 끝과 대응한다.

/< : 단어의 시작과 대응한다.

/> : 단어의 끝과 대응한다.

[] : 묶여진 문자 중의 하나와 대응한다.

[^ ] : 묶여진 문자를 제외한 아무 것이나 대응한다.

\ : 이어지는 기호를 문자 그대로 해석한다. (ex. \\ => \ 기호를 의미)

17. 셸 명령어 실행하기

:![명령어] : vi를 중단하고 지정한 셀 명령을 실행한다.

:!! : vi를 중단하고 이전의 셀 명령을 실행한다.

:sh : vi를 중단하고 셸을 실행한다.

:!csh : vi를 중단하고 새로운 C셸을 실행한다.

18. 데이터를 처리하기 위한 셸 명령어

[N]!![명령어] : [N]번 줄에서 명령어를 실행한다.

![M] [명령어] : 커서가 위치한 곳에서부터 [M]까지 명령어를 실행한다.

![M] fmt : 커서가 위치한 곳에서부터 [M]까지 줄들을 형식에 맞춘다.


19. 시스템이 죽었을 경우에 파일 살리기

vi -r : 되살릴 수 있는 모든 파일 이름을 보여준다.

vi -r [파일] : vi를 시작하여 지정한 [파일]을 되살린다.

20. 다중창으로 동시에 여러 파일을 열기

vs [파일] : 현재 열려 있는 vi 화면을 세로로 반 나누어, [파일]의 내용과 현재 작업중인 내용을 각각 동시에 보여준다.

split [파일] : 현재 열려 있는 vi 화면을 가로로 반 나누어, [파일]의 내용과 현재 작업중인 내용을 각각 동시에 보여준다

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

톰켓설치  (0) 2013.09.30
Linux java 설치  (0) 2013.09.30
find와 grep을 활용한 검색  (0) 2012.08.27
vi 명령 정리  (0) 2012.04.18
linux ftp client 사용법  (0) 2012.04.10

+ Recent posts