vi 에디터 vim 에디터
vim 에디터는 vi 에디터를 향상시킨 에디터이므로 기본 명령어 및 사용법이 동일합니다. 따라서 여기서 설명하는 거의 대부분의 명령어 및 사용법은 vi 에디터 및 vim 에디터 둘 다 동일하게 사용 가능합니다.


파일 생성하기 및 실행하기
터미널에서 vi만 입력하는 경우에는 비어있는 에디터 상태로 실행되며, 파일명을 입력하는 경우 해당 경로에 파일이 존재하면 해당 파일을 실행하여 편집할 수 있고, 파일이 존재하지 않으면 해당 파일명으로 파일을 생성하며 내용이 비어있는 상태로 실행됩니다.
vi 또는 vi [파일명]


읽기 전용으로 파일을 실행하고 싶은 경우 -R 옵션을 사용합니다.
vi -R 파일명


vi만 입력하여 내용이 비어있는 상태로 실행했습니다. 첫 줄에 커서가 깜빡이고 간단한 후원 정보 및 도움말 정보가 나타납니다. 여기서 내용을 작성하려고 키를 누르게 되면 화면에 나타난 내용은 자동으로 사라집니다. ~ 로 시작하는 행은 아무 내용(공백 포함) 도 입력되지 않은 행을 의미합니다.






vi 에디터 실행 모드
vi 에디터는 리눅스/유닉스 에서 사용하기 위한 에디터이므로 CLI(커맨드 기반) 으로 문서를 편집하게 됩니다. 따라서 윈도우 메모장이나 MS 워드와 같은 GUI 기반의 편집기처럼 메뉴 버튼이나 다양한 기능의 아이콘을 사용할 수 없고 리눅스/유닉스 특성상 예약된 단축키들 때문에 편집기만의 단축키를 사용하기가 어렵습니다. 따라서 이러한 환경을 극복하기 위해 세 가지 실행 모드를 제공하고 있습니다.




1. 명령모드(Command Mode)
vi 에디터를 실행한 직후에 볼 수 있는 모드입니다. 커서 이동을 통해 문서의 스크롤을 이동하면서 문서의 내용을 읽을 수 있습니다. 또한 명령모드인 상태에서 입력모드나 EX모드로 전환할 수 있습니다. 커서 이동, 스크롤 이동, 문자열 치환, 삭제, 복사, 검색등 대부분의 vi 명령어가 명령모드인 상태에서 실행가능합니다. 주의할점으로 vi 에디터의 명령모드에서는 대소문자를 구분하기 때문에 명령어 사용시 주의하지 않으면 엉뚱한 명령어가 실행될 수 있습니다.




2. 입력모드(Input Mode)
입력모드란 말 그대로 문서의 내용(텍스트)를 입력할 수 있는 상태입니다. 입력모드에서는 에디터 하단의 -- INSERT -- 라는 문구가 표시됩니다. 명령모드에서 입력모드로 전환하는 가장 간단하면서도 많이 사용되는 방법은 i를 입력하는 것입니다. i를 입력하면 커서가 입력된 지점에서 텍스트를 입력할 수 있습니다. 반대로 입력모드에서 명령모드로 다시 돌아가고 싶은 경우에는 <ESC> 키를 입력합니다.




3. EX모드(또는 라인 명령 모드, Excution Mode)
vi의 특별한 명령어를 실행하기 위한 모드입니다. 파일 저장, 불러오기, vi 에디터 옵션 설정 등을 실행할 수 있습니다. 명령모드인 상태에서 : (콜론) 을 입력합니다. 그리고 이상태에서 명령어를 입력할 수 있습니다. 예를 들어 : 입력한 상태에서 wq를 입력하고(:wq) 엔터를 누르면 저장후 종료 명령어입니다. EX모드에서 명령모드로 돌아가는 경우에는 <ESC> 키를 입력합니다.





명령모드인 상태에서 커서 이동 명령
명령모드에서 사용 가능한 커서 이동 명령어들은 다음과 같습니다. 주의점으로는 대소문자를 구분한다는 점 입니다. <Caps Lock>과 <Shift> 를 적절히 활용하면 편하게 이용 가능합니다.

h 또는 ←
왼쪽으로 커서 한 글자 이동
l 또는 → 
오른쪽으로 커서 한 글자 이동
k 또는 ↑
위로 커서 한 행 이동
j 또는 ↓
아래로 커서 한 행 이동


단어 단위로 이동하기(띄어쓰기로 구분)
W
다음 단어의 처음으로 이동
현재 커서의 단어의 처음으로 이동
E
다음 단어의 끝으로 이동

행, 문장, 단락 단위 이동
0 또는 ^
현재 행의 맨 앞으로 이동
현재 행의 맨 끝으로 이동
+
다음 행의 처음으로 이동
-
이전 행의 처음으로 이동
(
문장의 시작으로 이동
)
문장의 끝으로 이동
{
단락의 시작으로 이동
}
단락의 끝으로 이동



원하는 행으로 이동
[행번호]G
숫자로 원하는 행의 숫자를 입력하고 대문자 G를 입력하면 해당 행으로 이동
gg
문서의 가장 첫 행으로 이동
G
문저의 가장 마지막 행으로 이동
:숫자
추가적으로 EX 모드에서 숫자만 입력하면 해당 행으로 이동할 수 있습니다.



현재 화면에서의 이동
H
현재 화면의 맨 위로 이동
현재 화면의 가운데 행으로 이동
L
현재 화면의 맨 아래로 이동


화면 단위 이동
Ctrl + F
한 화면 다음으로 이동
n + Ctrl + F 
n만큼 다음 화면으로 이동
Ctrl + B
한 화면 이전으로 이동
n + Ctrl + B
n만큼 이전 화면으로 이동
Ctrl + D
반 화면 다음으로 이동
Ctrl + U
반 화면 이전으로 이동
n + Ctrl + D
n 행 다음으로 이동
n + Ctrl + U
n 행 이전으로 이동





명령모드인 상태에서 텍스트 잘라내기 및 복사 붙여넣기
명령모드에서는 텍스트를 잘라내고 복사하고 붙여넣기할 수 있습니다. 한가지 사실을 말씀드리자면 vi 에디터에는 삭제 기능이 없습니다. 무슨 말이냐면 삭제를 해도 실제로는 삭제가 아니라 잘라내기가 된다는 사실입니다. 사용자 입장에서는 별 차이가 없을지도 모르지만 최근에 삭제한 내용은 vi 레지스터에 저장되어 다시 붙여넣기하면 복구가 가능합니다. 다음 표에서는 삭제로 표기했지만 사실은 잘라내기가 정확한 표현입니다.
x
현재 커서의 한 글자를 삭제
X
현재 커서 앞 글자 삭제
dd
현재 커서의 행 삭제
[숫자]dd
현재 커서의 행부터 숫자만큼의 행을 삭제
D
현재 커서의 위치에서 행의 끝까지 삭제
dw
단어 삭제
cw
단어 삭제 후 입력
d$
커서가 있는 위치에서 행의 끝까지 삭제
dG
커서가 있는 위치에서 문서 끝까지 삭제
P (대문자)
최근 삭제된 내용을 커서 다음/아래에 삽입
p (소문자)
최근 삭제된 내용을 커서 이전/다음에 삽입
xp
두 문자를 바꿈
deep
두 단어를 바꿈
ddp
두 행을 바꿈
yy
현재 커서가 있는 행을 복사
u
최근 수행한 명령을 되돌림(undo)
U
최근 명령을 수행한 행의 모든 명령 취소
Ctrl + R
최근 수행한 명령을 다시 실행(redo)
r
다른 파일의 내용을 읽어들임




명령모드인 상태에서 문자열 검색
에디터에서 필수 요소인 문자열 검색 명령어입니다.
/문자열
문자열을 현재커서 기준에서 아래로 검색
?문자열
문자열을 현재커서 기준으로 위로 검색
n
이전에 검색한 문자열과 방향으로 한번 더 검색(반복)
N
이전에 검색한 문자열을 반대 방향으로 한번 더 검색(반복)




명령모드 -> 입력 모드로 전환하기
가장 쉽고 자주 사용하는 키로는 i 를 입력하는 방법이 있지만 커서의 위치에 따라 다음의 입력을 사용할 수 있습니다.
i
현재 커서에서 편집 시작
I
커서가 있는 행의 처음에서 편집 시작
a
현재 커서 바로 다음부터 편집 시작
A
커서가 있는 행의 끝에서 편집 시작
o
현재 커서가 있는 다음 행에서부터 편집 시작
O
현재 커서가 있는 행과 이전 행 사이에서 편집 시작
s
현재 커서에서 한 글자 지우고 편집 시작
S
현재 커서가 있는 행을 지우고 편집 시작



EX모드(라인 명령모드) 에서 저장 또는 종료 명령
명령 모드에서 : (콜론) 을 입력한 상태가 EX 모드이며, 다음의 명령어들을 입력할 수 있습니다. 명령어 입력 후에는 <Enter> 를 눌러야 수행하며, 명령어를 실행하고 싶지 않으면 <ESC>를 통해 다시 명령모드로 빠져나올 수 있습니다.

명령어들에 ! (느낌표) 를 붙이면 강제 실행을 의미합니다. 예를들어 :q는 에디터 종료인데, :q! 는 강제 종료를 의미합니다.
:w
현재 편집중인 내용을 저장합니다.
:w [파일명]
현재 편집중인 내용을 지정한 파일명으로 저장합니다.
:w >> [파일명]
현재 편집중인 내용을 지정한 파일의 내용에 추가합니다.
:w!
강제로 내용을 저장합니다.
:q
에디터를 종료합니다.
:q!
에디터를 강제로 종료합니다.
:wq
편집중인 내용을 저장하면서 에디터를 종료합니다.
:wq!
편집중인 내용을 강제로 저장하면서 에디터를 종료합니다.
ZZ
파일을 저장하고 에디터를 종료합니다.
:x
파일의 내용이 변경된 경우 저장 후 종료합니다.




EX모드(라인 명령모드) 에서 범위 지정 명령
명령모드에서도 문자열을 삭제 복사 붙여넣기가 가능하지만 EX모드에서도 가능합니다.
:20d
20번 행을 삭제
:10,25d
10 ~ 20번 행을 삭제
:10,$d
10 ~ 마지막 행(문서 끝) 까지 삭제
:%y
문저 전체를 복사 (또는 :1,$y 로도 가능)
:.,+20y
현재 행부터 아래로 20행을 복사
:-10,+5d
현재 행을 기준으로 위로 10행 ~ 아래로 5행까지 삭제
:40pu
40번 행에 붙여넣기



범위 지정시 사용되는 기호 및 규칙
:[숫자1],[숫자2]
숫자행1 부터 숫자행2 까지를 의미
+[숫자]
현재 위치에서 아래로 숫자만큼의 행을 의미
-[숫자]
현재 위치에서 위로 숫자마늠의 행을 의미
.
현재 행을 의미
$
문서의 마지막 행을 의미
%
문서 전체를 의미




기타 명령어
기타 명령어입니다.
^L
화면을 다시 보여줌
:set nu

행 번호 표시
:set number
:set nonu

행 번호 표시 제거
:set nonumber


블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!