4 분 소요

📝vi편집기 vim 이란?

  • vi는 Emacs와 함께 Unix 환경에서 가장 많이 쓰이는 문서 편집기이며 1976년 빌 조이가 초기 BSD 릴리즈에 포함될 편집기로 만들었습니다. vi라는 이름은 한 줄씩 편집하는 줄단위 편집기가 아니라 한 화면을 편집하는 비주얼 에디터라는 뜻에서 유래되었습니다. 간결하면서도 강력한 기능으로 열광적인 사용자가 많습니다.

    현재는 오리지널 vi를 사용하는 경우는 거의 없고, 일반적으로 기능을 모방하여 만들어진 클론을 사용하고 있습니다. 이런 클론 중 많이 쓰이는 것은 기능이 다양한 것을 장점으로 내세우며, 리눅스 배포판에 포함되는 Vim, 그리고 BSD 라이센스로 제공되며 원본 vi의 동작과 호환성으로 정평이 나 있는 nvi, 독자적인 팬층을 확보한 elvis 등이 있습니다.

  • vim 이란 ‘Vi IMproved’ 의 약자로 Bram Moolenaar가 만든 vi 호환 텍스트 편집기 입니다. vi와 호환되면서도 독자적으로 다양한 기능을 추가하여 사용자의 편의를 돕고 있다고 합니다.

    특히 Vim 스크립트 등을 사용해서 자유롭게 편집 환경을 변경하거나, 확장된 정규 표현식 문법, 강력한 문법 강조 기능, 다중 되돌리기, 유니코드를 비롯한 다국어 지원, 문법 검사 등을 쓸 수 있다는 점이 강점으로 꼽히고 있습니다.


세 가지 주요 모드

  • vim은 여러 모드를 가집니다. Nomal, Insert ,Visual Mode의 세 가지가 주요 모드입니다.

  • 처음 실행되는 모드는 Commend Mode 입니다. i 키를 누르면 대부분 에디터의 텍스트 입력 상태인 입력모드 Edit Mode가 됩니다. esc키는 모든 모드에서 나올때 사용하게 됩니다.

    v를 누르면 비주얼 모드(Visual Mode)가 됩니다. 화면의 제일 밑줄에 -- INSERT --, -- VISUAL --로 현재 모드를 알려줍니다.

    를 누르면 EX Mode로 들어갑니다. 모드 상태를 보여주던 제일 밑줄에서 : 다음에 커서가 놓이면서 명령어를 기다리는 것을 볼 수 있습니다.

vi 커서 이동

커서 설명
h (←) 왼쪽으로 커서 이동
j (↓) 아래로 커서 이동
k (↑) 위로 커서 이동
l (→) 오른쪽으로 커서 이동
w 오른쪽 한 단어의 끝 부분으로 커서 이동
e 오른쪽 한 단어의 앞 부분으로 커서 이동
b 왼쪽 한 단어의 앞 부분으로 커서 이동
Enter 한 행 아래로 커서 이동
Back space 한 문자 왼쪽으로 커서 이동
Space Bar 한 문자 오른쪽으로 커서 이동
^ 행의 맨 왼쪽으로 커서 이동
$ 행의 맨 오른쪽으로 커서 이동
H 화면의 맨 위로 이동
M 화면의 중간으로 이동
L 화면의 맨 아래로 이동
숫자G ‘숫자’ 만큼 지정한 줄로 커서 이동
Ctrl + i 한 화면 위로 이동
Ctrl + b 한 화면 아래로 이동
Ctrl + d 반 화면 위로 이동
Ctrl + u 반 화면 아래로 이동
Ctrl + e 한 줄씩 위로 이동
Ctrl + y 한 줄씩 아래로 이동

문자, 행 , 삽입 명령어

커서 설명
a 커서 오른쪽에 문자 삽입
A 커서 오른쪽, 행의 끝에 문자 삽입
i 커서 왼쪽에 문자 삽입
I 커서 왼쪽, 행의 처음에 문자 삽입
o 커서 아래에 행 삽입
O 커서 위에 행 삽입
ESC 종료

텍스트 변경 명령어

명령어 설명
cw 단어 변경
cc 행 변경
C 커서 오른쪽의 행 변경
s 커서가 위치한 문자열 대체
S 커서가 위치한 라인의 문자열 대체
r 커서 위치 문자를 다른 문자로 대체
r-Enter 행 분리
J 현재 행과 아래 행 결합
xp 커서 위치 문자와 오른쪽 문자 교환
~ 문자형(대, 소문자) 변경
u 이전 명령 취소
U 행 변경 사항 취소, 이전의 최종 행 취소
. 이전 최종 명령 반복

텍스트 삭제 명령어

명령어 설명
x 커서가 있는 문자 삭제
nx 커서가 있는 위치부터 n개의 문자를 삭제
dw 현재 커서에 있는 한 단어 삭제
dd 커서가 있는 라인 삭제
ndd 커서가 있는 라인부터 n개의 라인 삭제
db 커서의 위치에서 거꾸로 한 단어 삭제
D 커서 오른쪽 행 삭제
:5,10d 5~10번째 행 삭제

복사 및 이동 명령어

명령어 설명
yy 커서가 위치한 줄 복사
Y 행 yank 또는 복사
yh 커서의 왼쪽 문자 복사
yl 커서에 위치한 문자 복사
yi 커서가 위치한 줄과 그 아랫줄 복사
yk 커서가 위치한 줄과 그 윗줄 복사
p yank 되거나 삭제된 행 현재 행 위로 삽입
P yank 되거나 삭제된 행 현재 행 아래에 삽입
:1,2 co 3 1~2행을 3행 다음으로 복사
:4,5 m 6 4~5행을 6행 위로 이동
  • yank : 홱 잡아당기다

한줄 복사

해당 라인에서 ‘yy’, 즉 y를 두번 누르면 캐시에 저장이 된다. 붙여넣기를 원하는 곳으로 이동하여 ‘p’를 누르면 커서 다음 라인에 붙여넣기가 된다.

블럭 복사

‘v’키를 누른 후 커서를 이동하여 블력을 설정한다. (putty의 경우 블럭이 설정되는 모습이 보이나, ssh의 경우 블럭 모습이 나타나지 않으나 실제로는 설정되고 있다.) 원하는 부분을 블럭으로 설정한 뒤(설정 완료키는 없다) ‘y’키를 누르면 캐시에 복사가 된다. 같은 방법으로 원하는 곳으로 이동하여 ‘p’를 누르면 커서 다음 라인에 붙여넣기가 된다.

행 번호 설정 명령어

명령어 설명
:set nu 또는 :set number 에디터의 각 행의 좌측에 행 번호 표시.
:set nonu 에디터의 각 행의 좌측 행 번호 숨기기

행 찾기 명령어

명령어설명

명령어 설명
G 파일의 마지막 행으로 가기
21G 파일의 21번째 행으로 가기
Ctrl + G 현재 File name과 커서의 라인 정보

탐색 및 대체 명령어

명령어 설명
/{검색할 문자열} 오른쪽 아래 방향으로 문자열 검색
?{검색할 문자열} 왼쪽 위 방향으로 문자열 검색
n 문자열의 다음으로 계속 검색
N 문자열의 이전으로 계속 검색
:g/search-string/s/ 각 발생 탐색 후 확인하고 대체
:s/string/rep 현재 행의 str을 rep로 대체
:1,.s/string/rep/ 1부터 현재 행의 str을 rep로 대체
:%s/string/rep/g 파일 전체 str을 rep로 전부대체
:.$/aaa/bbb 커서의 위치로부터 파일의 끝까지 있는 모든 aaa를 bbb로 대체

화면 정리 명령어

명령어 설명
Ctrl + l 불필요한 화면정리 후 다시 표시

파일 명령어

명령어 설명 예제
:r {파일명} 커서 다음에 파일 삽입 :r test.txt
:{행번호} r {파일명} 입력한 파일을 입력한 행번호 다음에 삽입 :10 r test.txt

보관 및 종료 명령어

명령어 설명
:w 변경사항 저장
:w {파일명} 변경사항 입력한 파일명으로 저장
:wq 변경사항 보관 후 vi 종료. ZZ 명령과 같음. :w(기록)과 :q(종료) 를 연속적으로 수행.
ZZ 변경사항 보관 후 vi 종료. 임시 버퍼의 내용을 vi로 호출할때 사용되었던 파일에 기록한 후 vi를 빠져나옴.
:q! 변경사항 보관하지 않고 종료
q 수정한 파일을 저장하지 않고 vi 종료
e! 수정한 것을 무시하고 다시 편집상태로

기타

문자 설명
. 현재 line
% 전체 line
$ 파일 맨끝 line
1,$ %
2,3 2 ~ 3 line

댓글남기기