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 |
다음 단어의 처음으로 이동 |
B |
현재 커서의 단어의 처음으로 이동 |
E |
다음 단어의 끝으로 이동 |
행, 문장, 단락 단위 이동
0 또는 ^ |
현재 행의 맨 앞으로 이동 |
$ |
현재 행의 맨 끝으로 이동 |
+ |
다음 행의 처음으로 이동 |
- |
이전 행의 처음으로 이동 |
( |
문장의 시작으로 이동 |
) |
문장의 끝으로 이동 |
{ |
단락의 시작으로 이동 |
} |
단락의 끝으로 이동 |
원하는 행으로 이동
[행번호]G |
숫자로 원하는 행의 숫자를 입력하고 대문자 G를 입력하면 해당 행으로 이동 |
gg |
문서의 가장 첫 행으로 이동 |
G |
문저의 가장 마지막 행으로 이동 |
:숫자 |
추가적으로 EX 모드에서 숫자만 입력하면 해당 행으로 이동할 수 있습니다. |
현재 화면에서의 이동
H |
현재 화면의 맨 위로 이동 |
M |
현재 화면의 가운데 행으로 이동 |
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 |
'리눅스[Linux]' 카테고리의 다른 글
[ubuntu] 우분투 텔넷(Telnet)서버 구축하기 (0) | 2018.06.21 |
---|---|
[ubuntu] 우분투 설치 직후 root 계정 비밀번호 su: Authentication failure 해결하기 (1) | 2018.06.20 |
[Linux] 리눅스 vi 에디터 스왑파일(swp) 생성시 해결방법 (0) | 2018.06.18 |
[Linux] 리눅스 yum 패키지 그룹, 환경 그룹 설치 및 관리 (0) | 2018.05.12 |
[Linux] 리눅스 yum 로컬 저장소 이용. 인터넷 연결 없이 DVD로 패키지 관리하기 (0) | 2018.05.11 |