본문 바로가기

Development/Etc

[VIM] VIM 기본 사용법

728x90

vim 메인 이미지

 

안녕하세요.

작은 한걸음을 실천하는 미스터한 입니다.

오늘은 리눅스에서 누구나 사용하고 있는 vim의 간단한 사용법을 소개하고자 합니다.

특히 정규식과 조합해서 사용하면 많은 이점이 있겠지만 정규식은 차차 알아가고

그에 앞서 vim에서 기본적으로 자주 사용되고 있는 것을 확인해보도록 할게요.

 

vim 

리눅스에서 vim 편집기를 사용하기 위해서는 기본적으로 "vi 파일명"으로 진입하게 됩니다.

vi [경로/]fileName.log

경로는 절대경로, 상대경로 또는 생략 가능합니다.

절대경로와 상대경로의 차이는 모르는 사람이 있다면 댓글로 남겨주시면 다른 글로 찾아뵙겠습니다. ㅎㅎ

일반적으로는 내가 있는 현재 위치에서 파일을 불러온다고 가정하겠습니다.

(경로 생략)

따라서 해당 내용을 불러올 경우(경로 생략)의 명령어는 다음과 같습니다.

vi fileName.log

만약 파일이 없다면 새로운 파일 생성하여 사용하게 됩니다.

vim 편집 모드

이젠 vim 실행 이후 문서를 불러와서 편집을 하기 위해서는 'i'키를 누른후 편집모드로 들어가야 합니다.

'i'키를 눌러 편집모드로 들어가게 되면 현재 커서에서 편집을 할수 있도록 진해되며 일반 텍스트 에디터처럼 작성하고 삭제하면 됩니다.

편집모드를 해제하여 읽기 모드로 전화하기 위해서는 'ESC'키를 눌러 편집모드를 해제할수 있습니다.

읽기모드에서 삭제도 할수 있있는데요, 문자만 삭제하기 위해서는 삭제하고자 하는 문자에 커서를 이동한 후 'x'키를 누르시면 해당 문자만 삭제가 되며, 라인을 삭제하기 위해서는 삭제하기 위한 라인에 커서를 이동한 후 'd'키를 빠르게 두번 누르시면 됩니다.

단축키 설명
i 현재 커서 위치에서 편집모드로 전환
x 현재 커서가 위치한 문자 삭제
dd 현재 커서가 위치한 라인 삭제
ESC 편집모드 해제(읽기모드로 전환)

리눅스에서 로그를 살펴보는 이유는 특정한 조건에 벌어지는 상황을 알아보기 위해서 많이 사용하실 텐데요.vim 검색 모드

수많은 로그 속에서 원하는 내용을 찾기가 쉽지 않습니다.

여기서 보통의 텍스트 에디터에서 "Ctrl+F"로 실행되는 찾기 단축기를 살펴볼게요.

기본적으로 찾기는 순방향(다음) 또는 역방향(이전)으로 찾게 되는데요.

vim에서 순방향(다음) 방향으로 찾는 방법은 '/'키를 누른후 검색어를 입력하는 것입니다.

여기서 다음 검색어를 찾는것은 'n'키를 입력하면 순차적으로 검색어와 같은 내용을 찾게 됩니다.

'/'키로 검색하는 도중 역방향(이전)을 찾고 싶을 경우는 'N'키를 누르면 됩니다.

또한 역방향(이전) 방향으로 찾는 방법은 '?'키를 누른후 검색어를 입력하는 것입니다.

여기서 'n'키는 역방향(이전)순으로 검색어를 찾게되고, 'N'키는 순방향(다음)으로 검색어를 찾게 됩니다.

정리하면 순방향(다음)은 "'/'키+검색어+n" 또는 "'?'키+검색어+N" 이며 역방향(이전)은 "'/'키+검색어+N" 또는 "'?'키+검색어+n"으로 검색하면 됩니다. 

검색 모드를 종료하기 위해서는 'ESC'키를 누르면 편집모드처럼 검색모드를 해제하여 읽기모드로 전환됩니다.

단축키 연계 설명
/+[검색어] 기본 검색어를 찾기
n 현재 찾은 검색어 기준 다음의 검색어 찾기
N 현재 찾은 검색어 기준 이전의 검색어 찾기
?+[검색어] 기본 검색어를 찾기
n 현재 찾은 검색어 기준 이전의 검색어 찾기
N 현재 찾은 검색어 기준 다음의 검색어 찾기
ESC   검색모드 해제 (읽기모드 전환)

vim 명령 모드

가장 많이 쓰이는 것은 저장(:w)와 나가기(:q) 그리고 공통적이로 사용하는 모드해제 'ESC'키 일 것입니다.

vim 작업 환경을 ':set' 명령어로 변경 가능합니다.

vim의 환경 설정을 조회하는 방법은 ':set all' 명령을 이용합니다. 다시 읽기모드를 가기 위해서는 'q'키를 누르면 됩니다.

:set 명령어

만약 대소문자를 구분하지 않고 모두 검색하고 싶을 경우 ':set ignorecase'명령어로 환경 설정을 변경하면 됩니다.

반대로 대소문자를 구분하여 검색을 원할 경우 ':set noignorecase' 명령어로 환경 설정을 변경하면 됩니다.

대부분의 set 명령어의 앞에 'no'를 추가/제거 함으로 설정/해제를 반복할 수 있습니다.

다음은 자주 사용하는 설정 명령어 입니다.

 

    ▷ 대소문자 구분안함 - set ignorecase / set noignorecase

     줄 번호 표시 - set nu / set nonu

     줄 바꿈 - set wrap / set nowrap

     커서가 위치한 줄 강조 - set cursorline / set nocursorline

     검사 결과 하이라이트 색상 변경 - hi search guibg=lightred

 

뿐만 아니라 문자열 치환도 가능합니다.

:%s/치환 전 문자열/치환 후 문자열/

'%s'는 모든 구간을 뜻하지만 '%' 대신 숫자를 이용하여 특정 라인만 치환하도록 할 수 있습니다.(일종의 범위 지정이라고 생각하면 편합니다.)

예를 들면 '1s'는 1번 라인만 치환하는 것이고 '1,10s'는 1~10번 라인만 치환하라는 뜻입니다.

'치환 전 문자열'은 정규식을 사용할수 있으나 '치환 후 문자열'은 정규식을 사용할 수 없습니다.

문자열 치환기능의 주요 옵션은 다음과 같습니다.

 

   ▷ g : 일치하는 모든 문자열 치환

   ▷ i : 치환할 때 대소문자를 구분하지 않음

   ▷ c : 일치하는 문자열에 대해서 치환 전에 확인

 

그리고 검색어 또는 명령어 이력을 조회가 가능합니다.

'/ + Ctrl + f' 검색어 조회, ': + Ctrl + f' 명령어 조회이며 해지하기 위해서는 'ESC'키가 아닌 ':q'명령어를 사용합니다.

 

더 자세한 내용은 다음에 정리하면서 끄적이고자 한다.

 

 

지금까지 읽어주신 것에 대해 감사를 표합니다.

728x90
반응형