- Linux Text Editor, vi -
1) vi에 대하여 파헤쳐 보자!
1) vi란 무엇인가?
- Visual Display editor
- 텍스트 문서를 편집하는데 사용되는 텍스트 편집기.
- Unix계열의 OS에서는 거의 모든 시스템에서 기본(Default) 텍스트 에디터로 사용되고 있다.
2) What is vim?
- Vim stands for "Vi Improved"
- vi에 unlimited undo, syntax coloring, split windows, visual selection, gui support 등이 보강된 vi clone 이다.
2) vi 기능에 대해 알아보자.
1) vi Editing Modes.
- vi는 3가지 동작 환경이 있다.
- Command mode (명령모드)
: 처음 vi에디터를 실행하면 '명령모드'에 놓여있다.
: 커서이동이 가능하며, 특정부분 복사, 붙여넣기, 삭제, 되돌리기(undo) 등이 가능하다.
: 특정키를 이용하여 '입력모드' 또는 '실행모드'로 이동할 수 있다.
:: Esc(Ctrl+C)키를 이용하여 '입력모드' 또는 '실행모드' 에서 '명령모드' 로 돌아갈 수 있다.(Return)
- Text Input Mode (입력모드)
: 텍스트를 추가, 삭제. (텍스트 편집)
: 입력 모드로 진입할때 사용되는 명령(입력키)에 따라 동작점이 약간씩 다르다.
- Last line mode (실행모드)
: 특정 문자 검색, 바꾸기, 파일의 저장 등...
: 기타 명령어의 수행.
3) vi 명령어.
- vi실행 옵션 -
- vi을 이용하여 파일을 실행시킬 때 옵션을 줄 수 있다.
명령어 |
동작 |
vi file |
file 을 연다. |
vi file1 file2 |
file1 과 file2를 차례로 연다. |
view file |
file 을 읽기 모드로 연다. |
vi -R file |
file 을 읽기 모드로 연다. |
vi + file |
file 을 열때 커서가 file 본문의 마지막 행에 위치. |
vi +# file <#은 Number> |
file 을 열때 커서가 #행에 위치 한다. |
- vi명령모드 -
- 처음 vi를 실행하면 명령모드에 놓이게 된다.
[입력모드 ↔ 명령모드 ↔ 실행모드]로 모드 이동이 가능하며 명령모드로 Return 하기 위해서 Esc(Ctrl+C)키를 사용한다.
명령어 |
동작 |
h 또는 [Backspace] 또는 ← |
커서 왼쪽으로 한 칸 이동. |
#h 또는 #[Backspace] <#은 Number> | 커서를 왼쪽으로 #열 이동. |
j |
커서 위로 한 행 이동. |
k |
커서 아래로 한 행 이동. |
l (소문자 엘) 또는 → |
커서 오른쪽으로 한 칸 이동. |
#l <#은 Number> | 커서를 오른쪽으로 #열 이동. |
M | 커서를 문서의 중간으로 이동. |
H | 커서를 문서의 처음으로 이동. |
w 또는 W |
커서 다음 단어 처음 문자로 이동. |
b 또는 B |
커서 이전 단어 처음으로 이동. |
e 또는 E |
커서 다음 단어 끝으로 이동. |
^ 또는 0 또는 [home]키 |
커서가 위치한 현재 행의 첫 단어로 이동. |
$ 또는 [End]키 |
커서가 위치한 현재 행의 마지막 단어로 이동. |
e | 커서가 위치한 현재 행의 마지막 단어로 이동. |
G 또는 L | 커서를 마지막 행으로 이동. |
#G 또는 #gg <#은 Number> | 파일내의 #행으로 이동. |
gg | 첫 행으로 이동. |
Ctrl + f | 다음 페이지 이동. |
Ctrl + b | 이전 페이지 이동. |
r& <&는 문자> | 현재 커서가 있는 문자를 &로 바꾼다. |
R | Esc입력 시까지 커서위치의 문자를 바꾼다. |
dw | 현재 커서가 위치해 있는 단어 삭제. |
dd | 현재 행 삭제. |
#dd <#은 Number> | 현재 커서 행부터 #행만큼 삭제. |
D | 현재 행의 문자열 삭제. 행은 존재. |
yy 또는 Y | 현재 행 복사. |
#yy 또는 #Y <#은 Number> | 현재 행을 기준으로 #행 복사. |
yw | 현재 커서가 위치한 문자열 복사. |
y$ <$은 문자'$'> | 현재 커서 위치부터 행 끝까지 복사. |
x | 현재 커서가 위치한 단어를 삭제. |
X | 현재 커서 위치의 앞의 단어를 삭제. |
p | 삭제나 복사한 행 또는 단어를 커서 뒤에 삽입. |
P | 삭제나 복사한 행 또는 단어를 커서 앞에 삽입. |
u | 작업을 이전 단계로 복구. (undo) |
Ctrl + r | u키로 복구한 상황을 되돌림. (redo) |
~ | 커서가 위치한 단어를 소대문자 변환. |
- vi입력모드 -
- 입력모드에서는 텍스트 추가, 수정이 가능하다.
- 해당 동작을 수행하고 입력모드로 돌입한다.
명령어 |
동작 |
a |
커서 뒤에 입력모드 시작. |
A |
현재 행의 마지막 문자 뒤에서 부터 입력 시작. |
i 또는 [insert]키 |
커서 앞에서 부터 입력 시작. |
I (대문자 아이) |
현재 행의 첫 문자 앞에서부터 입력 시작. |
o |
커서 아래 행을 추가하고 입력. |
O |
커서 위 행을 열고 입력. |
cw |
커서가 위치한 문자열을 삭제하고 입력모드. |
s |
커서위치의 문자를 지우고 입력모드로 변경. |
S |
현재 행의 모든 문자를 지우고 입력모드 돌입. |
Esc 또는 Ctrl+C | 명령모드로 돌아간다. |
- vi실행모드 -
- 명령모드 에서 ":" (shift + ; )(콜론)을 입력시 돌입한다.
- ":" (콜론)을 입력하여 실행모드에 돌입하면 : 가 입력된 상태로 vi 편집기 하단에 입력가능한 상태가 된 것을 볼 수 있다.
명령어 |
동작 |
:e file명 |
file명 파일열기, 기존 열려있던 파일은 종료됨. |
:enew |
현재 창을 닫고 빈문서를 연다. |
:q |
현재 문서 종료. (단, 변경된 내용이 없는 경우) 변경된 내용이 있을 경우 종료되지 않는다. |
:q! |
강제 종료. (저장하지 않고 종료한다.) |
:w |
현재 문서 저장. |
:wq |
현재 문서 저장 후 종료. |
:f |
현재 문서의 파일의 이름과, 라인 수를 보여줌. |
:set nu 또는 :set number |
각 행의 번호를 보여준다. |
:set nonu |
각 행에 번호를 보여주지 않는다. |
:/"문자열" 또는 /"문자열" | "문자열" 검색. n키를 통해 Next검색 N키를 통해 Prev 검색. |
:?"문자열" 또는 ?"문자열" | "문자열 검색". |
:w >> File | File 파일에 현재 문서의 내용을 추가함. |
:#r File <#은 Number> | File 파일의 내용을 현재 문서의 #행에 추가. |
:#r! Command | Command 실행 결과를 파일의 #행에 추가. |
:set ts=# <#은 Number> | Tab크기(사이즈)를 조절함. |
:! Command | vi를 일시정지하고 Command 수행. |
:.! Command | Command 수행 결과를 문서에 출력. |
:#s/string1/string2/Option Option : g ( 전체(기본값) ) Option : c ( 물어보기 ) -> y: 한번바꾸기, n: 안바꾸기 -> a: 다 바꾸기, q: 종료 Option : i ( 대소문자 구분 x ) | Ex1.) :0s/aa/bb/g -> 0행의 aa문자열을 bb로 교체. Ex2.) :0,5s/aa/bb/g -> 0~5행의 aa문자열을 bb로 교체. Ex3.) :%s/aa/bb/gci -> 모든행의 aa문자열을 bb로 교체. -> 대소문자 구분하지 않으며 교체 할 때 물어봄. |
Esc 또는 Ctrl+C | 명령모드로 돌아간다. |
ps. vi 실행 옵션이나 명령어가 무지막지하게 많기 때문에.. 더 필요하시면 직접.. 찾으셔서...
'Linux' 카테고리의 다른 글
Linux 부팅 과정에 대한 이해. <임시저장> (0) | 2013.07.27 |
---|