파일을 편집하려면 터미널에서 vi 명령어를 사용하여 파일을 열 수 있습니다. 예를 들어, vi filename과 같이 입력합니다.
편집기를 종료하려면 :q를 입력하고 엔터 키를 누릅니다. 변경 사항이 저장되지 않았을 경우 :q!를 사용하여 강제로 종료할 수 있습니다.
변경 사항을 저장하고 종료하려면 :wq를 입력합니다.
2. vi 모드
VI 명령 모드와 편집 모드 가 있으며 함께 사용하여 효율적으로 텍스트를 편집할 수 있습니다. 명령 모드에서 명령을 입력하고, 편집 모드에서 실제 텍스트를 편집하는 방식으로 작업합니다. 이러한 모드 간의 전환을 통해 VI를 유연하고 강력한 편집 도구로 만들어 줍니다. 또한 명령 라인 모드는 파일 저장 및 종료등을 실행할 수 있습니다.
명령 모드(Command mode)
VI 편집기를 시작하면 기본적으로 명령 모드로 시작합니다.
명령 모드에서는 텍스트를 입력하는 것이 아니라 명령을 입력합니다.
여러 가지 명령을 사용하여 텍스트를 편집하고, 파일을 저장하고, VI를 종료할 수 있습니다.
주요 명령어는 다음과 같습니다: i: 현재 커서 위치에서 입력 모드로 전환합니다. a: 현재 커서 다음 위치에서 입력 모드로 전환합니다. o: 현재 줄 다음에 새로운 줄을 만들고 입력 모드로 전환합니다. x: 현재 커서 위치의 문자를 삭제합니다. dd: 현재 줄을 삭제합니다. yy: 현재 줄을 복사합니다. p: 복사한 내용을 현재 위치에 붙여넣습니다. :w: 파일을 저장합니다. :q: VI를 종료합니다. :q!: 변경사항을 저장하지 않고 VI를 강제 종료합니다.
입력 모드(Insert mode)
입력 모드에 진입하려면 명령 모드에서 i, a, o 명령 중 하나를 사용합니다.
편집 모드에서는 실제 텍스트를 입력하고 편집할 수 있습니다.
ESC 키를 누르면 편집 모드에서 명령 모드로 전환됩니다.
명령 라인 모드(Command-line mode)
:를 입력하여 전환하며, 파일 저장 및 종료 등의 명령을 실행합니다.
3. VI / VIM 명령어 모음
저장 및 종료
명령어
설명
:w
저장
:w file.txt
file.txt 파일로 저장
:w » file.txt
file.tx 파일에 덧붙여서 저장
:q
vi 종료
:q!
vi 강제 종료
ZZ
저장 후 종료
:wq!
강제 저장 후 종료
:e file.txt
file.txt 파일을 불러옴
:e
현재 파일을 불러옴
:e#
바로 이전에 열었던 파일을 불러 옴
입력모드 전환
명령어
설명
a
커서 위치 다음칸부터 입력
A
커서 행의 맨 마지막부터 입력
i
커서의 위치에 입력
I
커서 행의 맨 앞에서 부터 입력
o
커서의 다음행에 입력
O
커서의 이전 행에 입력
s
커서 위치의 한글자를 지우고 입력
cc
커서위치의 한 행을 지우고 입력
이동
명령어
설명
h
왼쪽으로 이동
l
오른쪽으로 이동
j
아래행으로 이동
k
위 행으로 이동
w 또는 W
다음 단어의 첫 글자로 이동
b 또는 B
이전 단어의 첫 글자로 이동
e 또는 E
단어의 마지막 글자로 이동
<CR>
다음행 첫 첫 글자로 이동
^
그행의 첫 글자로 이동
$
그 행의 마지막 글자로 이동
+
다음 행의 첫 글자로 이동
–
위 행의 첫 글자로 이동
(
이전 문장의 첫 글자로 이동
)
다음 문장의 첫 글자로 이동
{
이전 문단으로 이동
}
다음 문단으로 이동
H
커서를 화면 맨 위로 이동
z<CR>
현재 행을 화면의 맨우로 이동
M
커서를 화면 중안으로 이동
z.
현재 행을 화면의 중앙으로 이동
L
커서를 화면 최하단으로 이동
z-
현재 행의 화면의 최하단으로 이동
[n]H
커서를 위에서 n 행으로 이동
[n]L
커서를 아래에서 n 행으로 이동
ctrl+u
반 화면 위로 스크롤
ctrl+d
반 화면 아래로 스크롤
ctrl+b
한 화면 위로 스크롤
ctrl+f
한 화면 아래 스크롤
gg 또는 1G
문서의 맨 처음으로 이동
G
문서의 맨 마지막 행으로 이동
[n]G 또는 :[n]
n 행으로 이동
삭제
명령어
설명
x 또는 dl
커서 위치의 글자 삭제
X 또는 dh
커서 바로 앞의 글자 삭제
dw
현재 위치부터 스페이스 까지 삭제
diw
현재 위치에 있는 단어 삭제
dd
커서가 있는 행을 삭제
[n]dd
현재 커서 부터 아래 n 번째 줄까지 삭제
dj
현재 커서와 아래 줄 삭제
[n]dj
현재 커서 부터 아래 n+1 번째 줄까지 삭제
dk
현재 커서와 윗로 n+1 번째 줄까지 삭제
[n]dk
현재 커서와 윗 줄 삭제
D 또는 d$
현재 커서가 있는 위치부터 행 끝까지 삭제
d0 또는 d^
현재 커서가 있는 위치부터 행 시작 까지 삭제
복사 & 붙여넣기
명령어
설명
yy 또는 Y
커서가 있는 한 행 복사
p
현재 커서에 붙여 넣기, 행 복사 일 경우 아래 줄에 붙여넣음.
P
현재 커서위치의 앞행에 붙여 넣기, 행 복사일 경우에는 윗 줄에 붙여 넣음
[n]yy 또는 [n]Y
커서가 위치한 이후로 n 행 복사
[n]p
n번 만큼 붙여넣기 반복
블록 지정
명령어
설명
v
블록 지정
V
줄단위 블록 지정
ctrl+v( 윈도우에서는 ctrl+q)
비쥬얼 블록 지정
블록 지정 중
y
블록 복사 하기
r
치환
d
지정 블록 지우기
U
대문자로 바꾸기
u
소문자로 바꾸기
~
대소문자 전환
J
행 합침
:
선택 영역에 대하여 ex 명령
<
행 앞에 탭 제거
>
행 앞에 탭 삽입
문자열 탐색 및 치환
명령어
설명
/[ 문자열 ]
문자열 탐색
:s/old/new
현재 행의 처음 old 를 new 로 교체
:s/old/new/g
현재 행의 모든 old 를 new 로 교체
:10,20s/old/new/g
10 행부터 20 행까지 모든 old 를 new 로 교체
[ 블록지정중 ]:s/old/new/g
지정 블록 내에서 모든 old 를 new 로 교체
:-3,+4s/old/new/g
현재 커서 위치에서 위로 3 행 아래로 4 행까지의 old 를 new 로 교체
:%s/old/new/g
문서 전 체 에서 old 를 new 로 교체
:%s/old/new/gc
문서 전 체 에서 old 를 new 로 확인 하 며 교체
:g/pattern/s/old/new/g
pattern 이 있는 모든 행의 old 를 new 로 교체
vim 정규 표현식
명령어
설명
^
행의 첫 문자 ([] 안에서는 not 의 의미 )
$
행의 끝
.
아무 문자나 한 문자 의미
\|
or 의 의미
[ ]
[] 사이의 문자 중 하나
\{min,max\}
min 이상 max 이하 반복됨
*
앞의 내용이 0 번 이상 반복됨
\+
앞의 내용이 1 번 이상 반복됨
\<
단어의 시작
\>
단어의 끝
\n
새 행 문자
\t
탭 문자
vim 확장 정규 표현 문자열
명령어
설명
\i
변수 지정에 사용되는 문자들 [0-9A-Za-z]
\I
\i 와 같지만 숫자는 제외
\k
keyword 로 사용하는 문자 [_.-0-9A0Za-z]
\f
파일 이름으로 사용하는 문자
\p
프린트 가능한 문자
\P
\p 와 같지만 숫자는 제외
\s
공백과 탭
\S
공백 아닌 문자
\d
숫자 [0-9]
\D
숫자가 아닌 문자 [^0-9]
\x
16 진수 숫자 [0-9A-Fa-f]
\X
16 진수 숫자가 아닌 문자 [^0-9A-Fa-f]
\o
8 진수 숫자 [0-7]
\O
8 진수 숫자가 아닌 문자 [^0-7]
\w
영문 단어의 시작에 사용되는 문자 [0-9A-Za-z-]
\W
영문 단어에서 사용되지 않는 문자 [^0-9A-Za-z-]
\h
영문 단어의 시작에 사용되는 문자 [A-Za-z-]
\H
영문 단어의 시작에 사용 되지 않는 문자 [^A-Za-z-]
\a
모든 알파벳 [A-Za-z]
\A
알파벳이 아닌 문자 [^A-Za-z]
\l
소문자 [a-z]
\L
소문자가 아닌 문자 [a-z]
\u
대문자 [A-Z]
\U
대문자가 아닌 문자 [^A-Z]
\e
Esc
\t
Tab
\r
캐리지 리턴
\b
백스페이스
\n
새행
POSIX 문자 클래스
명령어
설명
[:alnum:]
알파벳과 숫자 [A-Za-z0-9]
[:alpha:]
알파벳 [A-Za-z]
[:cntrl:]
제어 문자
[:blank:]
탭과 공백 문자
[:digit:]
숫자 [0-9]
[:graph:]
제어문자와 공백 무자를 제외한 문자
[:lower:]
소문자 [a-z]
[:upper:]
대문자 [A-Z]
[:print:]
제어문자를 제외한 문자 , 즉 프린터 할 수 있는 문자
[:punct:]
[:graph:] 문자 중 [:alnum:] 을 제외한 문자 . ex)!,@,#,$,%,^….