2011. 11. 28. 19:11 Log/Linux

vi 편집기

vi 편집기

unix의 일반 text 모드에서 사용되는 편집기에는 vi, emacs, pico 등이 있다.

특징

pico 편집기는 쉽고 단순하다. 간단한 편집 유틸리티 정도로 볼수 있음.

vi - 유닉스에서 가장 널리 사용되는 대중적인 편집기 *. 위키백과사전에 설명되어 있는 vi

emacs - 강력한 편집 기능 제공, vi 편집기에 비하면 더 복잡하고 크다.

* 레드헷을 포함한 대부분의 리눅스에서 기본적으로 사용되는 vi 편집기는 vi 편집기의 기능을 좀 더 향상 시킨
vim(vi improved) 이라는 편집기가 vi 라는 이름으로 사용되고 있으며 본래의 vi 편집기에 비해 사용하기 편한 좀
더 많은 기능을 제공한다.

vi 편집기 mode

vi 편집기 명령어는 크게 세 가지 모드로 나뉘어 질수 있다.

명령 모드 : vi 편집기의 기본모드.( 입력 상태이면 편집 명령어 사용 불가능)

입력모드 : i,I,a,A,o.O (입력모드 상태가 아니면 편집기 입력이 불가능)

확장모드(ex 모드, 또는 last line 모드라고 부른다.? - 왼쪽 하단에 명령어가 표시된다)

각 모드에서 사용하는 명령어는 정해져 있으며 입력모드 명령어가 가장 적다(i,I,a,A,o.O)

확장 모드 명령어는 명령어를 입력할 때 대부분 먼저 ‘:’을 붙이고 명령어를 입력함으로써

다른 모드 명령어와 구분이 된다.

각 모드 사이의 전환

명령어 모드 => 입력모드 전환 ; 입력모드 명령어중 하나를 사용.

입력모드 => 명령모드전환 ; esc 키 입력

입력모드 => 확장모드 ; 명령모드로 전환 후 확장모드 명령어 입력.

vi 편집기 명령어

커서 이동 명령

j(↓) 아래로 이동

k(↑) 위로 이동

h(←) 왼쪽으로 이동

l (→) 오른쪽으로 이동

G(go) 제일 끝줄로 이동

nG n번째 행으로 이동.

^b(back) 한 화면 위로 이동

^f(forward) 한 화면 아래로 이동

^u(up) 반 화면 위로 이동

^d(down) 반 화면 아래로 이동

e 한 단어 뒤로 이동

b 한 단어 앞으로 이동

0 줄의 제일 처음부터 이동

$ 줄의 제일 끝으로 이동

*. vi 편집기 명령어중 반복할 수 있는 일부 명령어 앞에? n(숫자)을 붙일 수 있다.
이때 n 의 의미는 n 뒤의 명령을 n 번 반복하라는 의미이다.
ex) 3dd => dd 명령을 세 번 반복하라. => 세 줄이 삭제된다.

입력 명령어

i 현재 커서 위치에 삽입(커서 위치에 문자를 오른쪽으로 한 칸 밀고 삽입)

a 현재 커서 위치 다음에 삽입 (a == "l + i")

o 현재 커서가 위치한 줄의 아랫줄에 삽입(o == "$ + a + Enter")

I 현재 커서가 위치한 줄의?맨 앞에 삽입 (I == "0 + i")

A 현재 커서가 위치한 줄의?맨 뒤에 삽입 (A == "$ + a")

O 현재 커서가 위치한 줄의?바로 위에 삽입

지우기 명령어

x 현재 커서 위치의 문자를 지운다. (nx x를 n번 반복)

dd 현재 커서가 위치한 줄을 지운다. (ndd dd를 n번 반복)

dw 현재 커서가 위치한 단어를 지운다.

d$ 현재 커서가 위치한 곳부터 그 행의 끝까지를 지운다.

dG 현재 커서가 위치한 행부터 편집문서의 마지막 줄까지 삭제한다.

*. 삭제한 내용은 바로 지워지지 않고 버퍼에 저장되므로 붙여넣기 하거나 취소 할 수 있다.

* 리눅스에 서 사용하는 vim 편집기는 undo를 여러 번 수행할 수 있다

복사하기와 붙이기

yy(=Y) 현재 커서가 위치한 줄을 버퍼에 복사한다.

(nyy => 현재 커서가 위치한 곳부터 아래로 n 라인을 버퍼에 복사한다)

yw 현재 커서가 위치한 단어를 버퍼에 복사한다.

(nyw => 현재 커서가 위치한 단어부터 오른쪽으로 n개의 단어를 버퍼에 복사한다)

p 버퍼에 들어 있는 내용을 현재 커서가 위치한 줄의 아래에 붙인다.

P 버퍼에 들어 있는 내용을 현재 커서가 위치한 줄의 위에 붙인다.? "xyy x라는 버퍼에 라인을 카피한다. (버퍼에 이름을 붙여서 사용하면 편집기가 열려 있는 동안은?버퍼의 내용을 잊어버리지 않는다.)

치환

r 현재 위치의 문자를 한개만 바꾼다.

R 현재 커서위치에서 오른쪽으로 esc 키를 입력할 때 까지 바꾼다.

cw 현재 위치의 단어를 바꾼다.

cc 현재 커서가 위치한 줄을 바꾼다.

C 현재 커서가 위치한 곳으로부터 줄의 끝까지 바꾼다.

~ 대소문자를 서로 바꾼다.

기타 명령어

J 현재 줄과 다음 줄을 합한다.?

^g 현재 편집하고 있는 파일의 정보를 보여준다.

u 방금 한 명령을 취소한다.

^R (=redo) 취소한 명령을 다시 취소 (vim)

U 현재 커서가 위치한 줄에 대한 편집 명령을 취소한다.

. 방금한 명령을 되풀이 한다.

^l 화면 refresh

확장모드 명령어

:! shell command ; 편집기를 벗어나지 않은 상태로 shell command 를 실행한다.

:args 현재 편집하는 파일명을 보여준다.

:w 편집하는 내용을 덮어쓰기로 저장한다.

:w filename 현재 내용을 지정된 파일 이름으로 저장한다.

:w! 강제로 덮어쓰기를 한다.

:wq 현재 편집하는 내용을 저장하고 종료한다.

:wq! 현재 편집하는 내용을 강제로 저장하고 종료한다.

:q! 강제로 종료한다.

:e filename ;새로운 파일을 편집한다.

:e! 현재 파일을 저장하지 않고 편집이전의 상태에서 새로 작성한다.

:r filename 현재 커서위치 다음에 파일을 끼워 넣는다.

:14 r filename 14행 이후에 파일을 읽어 삽입한다.

:n1,n2d n1번째 행에서 n2번째 행까지를 지운다.

:n1,n2 w filename n1에서 n2행까지를 filename에 저장한다.

:3,$d 3번째 행에서 끝항까지 지운다.

:set 여러 가지 환경 변수를 설정한다. set all하면 현재 설정되어 있는 환경 변수를 보여준다.

:set nu ; 라인 넘버 붙이기 (<=> set nonu)

:set showmode ; 현재 명령 상태를 화면 하단에 표시

:set bg=dark 편집기 글자색을 밝게 표시 (vim)

:set ai 자동 들여쓰기

:set ic 문자열 검색시 대소문자 구분 안한다.

:ab문자 문자열? ; 문자열을 문자열 앞에 있는 문자로 줄여 사용할 수 있음.(아래아한글의 상용구 기능에 해당)

:set ts=n 기본 tab size를 n column 으로 한다.

:sp 편집기 화면 수평 분할(화면을 수평으로 여러 개 분할해서 사용할 때 쓴다) (vim)

:^ww 분할된 화면으로 커서 이동. (vim)

문자열검색

/패턴 ; 패턴에 해당하는 내용을 현재 커서위치로 부터 오른쪽에서 그리고 아래쪽으로 찾는다.

n 정방향 다음 찾기 (현재 진행방향으로 => 아래쪽으로)

N 역방향 다음 찾기 (현재 진행 방향 반대쪽으로 => 위쪽으로)

? 패턴 패턴에 해당하는 내용을 현재 커서위치로 부터 왼쪽에서 그리고 위쪽으로 찾는다.

문자열 치환

:n1,n2s/serch/replace/g ( => 시작행번호, 마지막행번호s/찾을패턴/바꿀패턴/옵션 )

(g 는 global의 의미 해당 라인의 문자열을 전부 치환, g옵션이 생략될 경우에는 한 라인에서 치환해야할 패턴이
여러 개일 경우 맨 왼쪽 에 있는 것만 치환됨.)

*. 옵션에 i 가 사용되면 intractive 모드로 명령어 실행, 바꾸기 전에 물어본다.
* . 키보드에 있는 'Del', 'PageUp','Home','End' 및 방향키는 vi 편집기에서는 사용되지 않는다.
(vi 편집기 명령에 사용되는 키가 아니므로 시스템 환경에 따라서 될 수도 있고 안될 수도 있음)

vi 환경설정.

환경설정 파일을 만들면 자주 사용되는 vi 명령을 디폴트값으로 사용 할 수 있다.
환경설정파일은 확장 모드 명령어만 사용
위치 $HOME/.exrc 또는 .vimrc

설정 파일예

set nu(=set number) : 라인번호를 붙임.

set ts=4 : tab 의 크기를 4칸으로 함

syn on(=syntax on) : syntax highlighting

set ai : 자동들여쓰기

set cindent : c 소스 코딩시 자동들여쓰기

set shiftwidth : 자동들여쓰기 간격

set showmode : 편집 상태를 화면 하단에 표시

set vb : visual beep (경고음을 시각적으로 표시)

set title : 제목표시줄에 현재 편집중인 파일명 표시

set ic(=ignorecase) : 문자열 검색 할 때 대/소문자 구분 안함

set bg=dark : 글자색을 밝게 표시되도록 한다.

*. 기타
매크로
qa 라고 하면 a 레지스터에 입력하는 모든 키가 순서대로 매크로로 저장이 된다. 매크로가 실행줄일때는 아래에 기록중이라는 메세지가 보인다. q 를 누르면 매크로 저장이 돤료된다.

매크로에 저장된 명령을 실행할때는 @a 라고 하면 된다. 반복실행할때는 5@a 이렇게 숫자를 앞에 붙여주면 된다.

* vi 편집기 연습문제 1
* vi 편집기 연습문제 2

** vi 명령어 기타 **

vim 또는 vi에서 , Tab 문자를 보려면
:set list
그러면 현재 문서의 모든 탭문자가 ^I 라는 기호로 나타난다.
그리고 라인끝에는 $ 문자가 표시된다.
탭문자를 보이지 않게 하려면
:set nolist


'Log > Linux' 카테고리의 다른 글

파일 권한(Permission)  (0) 2011.11.28
계정관리  (0) 2011.11.28
리눅스 기본 명령어  (0) 2011.11.28
리눅스 사용자 인터페이스 및 명령어  (0) 2011.11.28
vmware 에서 centos 5.x및 fedora9 리눅스 설치방법  (0) 2011.11.28
Posted by logwatch

블로그 이미지
내가 나에게 확인 하는 블로그
logwatch

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.2
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

최근에 올라온 글

최근에 달린 댓글

글 보관함