vi 편집기
페이지 정보
작성자 admin 작성일16-01-12 16:13 조회2,866회 댓글0건관련링크
본문
unix의 일반 text 모드에서 사용되는 편집기에는 vi, emacs, nano(pico 의 clone버전), pico 등이 있다.
특징
nano - 쉽고 단순하다. 간단한 편집 유틸리티 정도로 볼수 있음.
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 한단어 앞으로(왼쪽) 이동
w 한단어 뒤로(오른쪽) 이동
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버퍼에 들어 있는 내용을 현재 커서가 위치한 줄의 위에 붙인다
-------------------------------------------------------------------------------------------------
치환
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 bg=light 편집기 글자색을 어둡게(진하게) 표시 (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 명령어 기타 **
vim 또는 vi에서 , Tab 문자를 보려면
:set list
그러면 현재 문서의 모든 탭문자가 ^I 라는 기호로 나타난다.
그리고 라인끝에는 $ 문자가 표시된다.
탭문자를 보이지 않게 하려면
:set nolist
* nano 편집기
alt + \ : 편집문서의 시작 부분으로 커서를 이동
alt + / : 편집문서의 끝부분으로 커서를 이동
alt + g : 커서를 특정행으로 이동
ctrl + w : 문자열 찾기
alt + w : 다음찾기
alt + a : 블럭지정
alt + ^ : 지정된 블럭을 버퍼에 저장
ctrl + u : 붙여넣기
ctrl + k ; 커서가 있는 행이나 지정된 블럭을 짤라내기
* nano -c 파일명 : 편집기로 파일 불러 올때 커서가 있는 라인번호를 맨 아래에 출력해준다.
(nano 편집기는 편집문서에 행번호를 붙여서 출력하는것은 안된다)
특징
nano - 쉽고 단순하다. 간단한 편집 유틸리티 정도로 볼수 있음.
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 한단어 앞으로(왼쪽) 이동
w 한단어 뒤로(오른쪽) 이동
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버퍼에 들어 있는 내용을 현재 커서가 위치한 줄의 위에 붙인다
-------------------------------------------------------------------------------------------------
치환
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 bg=light 편집기 글자색을 어둡게(진하게) 표시 (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 명령어 기타 **
vim 또는 vi에서 , Tab 문자를 보려면
:set list
그러면 현재 문서의 모든 탭문자가 ^I 라는 기호로 나타난다.
그리고 라인끝에는 $ 문자가 표시된다.
탭문자를 보이지 않게 하려면
:set nolist
* nano 편집기
alt + \ : 편집문서의 시작 부분으로 커서를 이동
alt + / : 편집문서의 끝부분으로 커서를 이동
alt + g : 커서를 특정행으로 이동
ctrl + w : 문자열 찾기
alt + w : 다음찾기
alt + a : 블럭지정
alt + ^ : 지정된 블럭을 버퍼에 저장
ctrl + u : 붙여넣기
ctrl + k ; 커서가 있는 행이나 지정된 블럭을 짤라내기
* nano -c 파일명 : 편집기로 파일 불러 올때 커서가 있는 라인번호를 맨 아래에 출력해준다.
(nano 편집기는 편집문서에 행번호를 붙여서 출력하는것은 안된다)
댓글목록
등록된 댓글이 없습니다.