Linux 개발환경 - vim 사용법


vim이란 간단히 말해 텍스트 에디터이다. 기존 터미널 환경의 vi라는 에디터에서 기능 개선 및 확장이 되었고, 그래서 이름이 "vi + improvement = vim"이다.

현재 터미널을 통하여 하는 개발 도구 중 개발에 필요한 도구중에 하나로써, 다중화면 컨트롤과 정규식을 사용한 텍스트 변경 그리고 다양한 플러그인을 통하여 터미널을 통한 개발 환경에서의 텍스트 에디터로써 많이 사용되고 있다. 아래는 vim에 대한 기본적인 사용법과 개발에 있어서 자주 사용하게 되는 키에 대한 가이드글이다.

vim 사용법

실행방법

vim 명령어를 통하여 실행할 수 있다.(파일이름을 생략해도 상관없음)

vim [File_name]

사용모드

vim에서는 텍스트를 입력/수정이 가능한 편집모드와 명령를 내릴수 있는 명령 모드가 있다. 기본적으로 시작하면 명령어 모드로 시작되는데,  편집모드는 다음과 같은 키 입력으로 편집모드로 들어갈 수 있다.

모든 명령들은 대소문자를 구분하다. 주의해야 한다. 

 o  포커스 잡힌 커서 아래 라인으로 이동 후 편집모드 시작
 O
 포커스 잡힌 커서 윗 라인으로  이동 후 편집모드 시작
 i  포커스 잡힌 커서 위치에서 편집모드 시작
 I  포커스 잡힌 커서의 라인 제일 앞으로 이동 후 편집모드 시작
 a  포커스 잡힌 커서의 다음 문자열에서 편집모드 시작
 A  포커스 잡힌 커서의 라인 제일 뒤로 이동후 편집모드 시작

편집모드로 들어가야 텍스트를 입력할 수 있다.
그리고 편집모드일 때는 왼쪽 하단에 "--INSERT-- " 라는 문구로써 구분할 수 있다.

※ 편집모드에서는 esc 키를 누르면 편집모드를 빠져나올 수 있다..

키 이동

 h  왼쪽으로 한칸 이동
 j  아래 줄로 이동
 k  윗줄로 이동 
 l  오른쪽으로 한칸 이동

※ 키보드의 방향키를 통하여 동일하게 사용할수 있다.

그외 이동방법들

기본 키보드이동뿐만 아니라 아래의 그외 이동방법들은 굉장히 많이 사용된다.

 w  다음 단어로 이동
 b  이전 단어로 이동
 Ctrl + f   다음 페이지로 이동
 Ctrl + b  이전 페이지로 이동
 G  문서의 맨 끝으로 이동
 gg  문서의 맨 앞으로 이동
 $  커서를 라인의 제일 뒤로 이동
 ^  커서를 라인의 제일 앞으로 이동
 :라인수  "라인수"에 명시한 해당 라인으로 이동 

블록 지정 

블록은 명령모드에서만 지정할 수 있다. 아래의 키를 통하여 블락의 시작을 잡고 이동명령키를 통하여 블락범위를 지정한다.

 v  단어 단위로 블럭 지정.
 Shift + v  라인 단위로 블럭 지정.
 Ctrl + v  블럭 단위로 블럭 지정. 

편집(복사, 삭제,  붙여넣기) 

지정된 블럭을 통하여 복사, 삭제, 붙여넣기를 할 수 있다. vim에서는 삭제 명령어도 복사를 하기 때문에 삭제 후 'p'를 눌르면 삭제된 내용을 붙여넣기 할 수 있다.

 y  지정된 블럭을 복사. 
 p   복사된 블럭을 현재 커서에 붙인다. 
 x  커서의 한 문자를 삭제한다.
 dd   커서의 현재 라인을 삭제한다. 

※ 그외로 Shift + j 를 통하여 커서의 아랫라인과 현재 라인을 하나의 라인으로 합칠 수 있다.  유용한 명령어이다. 자주 사용하게 될 것이다.

대소문자 변경

~을 통하여 소문자->대문자, 대문자->소문자로 변경할 수 있다. 위에서 알려드린 블록을 잡고 ~를 눌르면 블록단위 대소문자 변경이 이루어진다.

들여쓰기, 내어쓰기

들여쓰기는 < 키 입력을 통하여, 내어쓰기는 > 키입력을 통하여  들여쓰기를 할 수 있다. 이기능도 마찬가지로 블록단위 들여쓰기, 내어쓰기가 가능하다.

찾기 기능

명령모드에서 / 를 누르면 화면 제일 아래에 '/'가 나타나면  글자를 쓸수 있는 커서가 나타나며, 찾을 글자를 입력한 후 엔터를 치면 찾을 수 있다.

만약 찾은 갯수가 1개 이상이라면, n을 누르면 다음 찾은 부분(문서아래쪽방향)으로 이동이 가능하며 N을 누르면 이전 찾은 부분(문서위쪽방향)으로 이동한다. 찾기 기능에서 정규식도 사용이 가능하다. 아래는 int64를 찾을때 입력하는 내용 예시이다.

/int[0-9][0-9]


저장, 열기, 종료

명령모드에서 :를 누르면 exmode가 됩니다. exmode에서는 파일 열기, 저장, 닫기, 강제종료, 파일 이름확인등을 사용할 수 있다. 열고자 하는 파일이 존재하지 않을 경우에는 새로운 파일이 만들어진다.

 종료  :q
 저장  :w 
 열기  :e [filename] 
 강제 종료  :q! 
 저장 후 종료  :wq 
 작업중인 파일정보(파일 이름과 라인수)  :f 

Undo/Redo

 u undo 
 Ctrl + r redo 

파일 내비게이션

파일 내비게이션 화면은 아래의 명령어로 열수 있다.

:vs ./

문자열 변경하기

다음은 exmode를 문자열을 바꾸는 방법이다. 다음의 명령어를 통하여 문서 전체 or 지정한 블록에서 원하는 패턴을 변경할 수 있다.

:(시작줄),(끝줄)s/찾을패턴/변경할스트링/옵션

옵션

 g (global)  한 줄에 여러개 일치하면 모두 변경
  i (igore case)  대소문자 구분 안함
 c (confirm)  찾을 패턴을 변경할 때 사용자에게 변경여부를 확인.
  • example1)  :5,10s/a/b             5~10번째 줄에서 'a'를 'b'로 변경
  • example2)  :.,.+10/a/b/c          현재에서 10번째 줄 ( .은 커서 위치를 의미한다)에서 'a'를 'b'로 변경하는데 변경여부 확인.
  • example3)   :1,$s/a/b              1라인~ 마지막커서에서 'a'를 'b'로 변경 ($s는 마지막 위치를 의미합니다)

창분할(windows)

창분할을 통하여 여러개의 파일을 편집할 수 있다.

윈도우 화면 가로 분할

:sp


윈도우 화면 세로 분할

:vs

창 삭제

 Ctrl+w q  현재 커서의 창을 종료 
 Ctrl+w c 현재 커서의 창을 닫기 
 Ctrl+w o 현재 커서의 창만 남기고 모든 창 삭제 

창 이동

 Ctrl+w w 커서를 순차적으로 이동 
 Ctrl+w 화살표

커서를 화살표 방향의 창으로 이동


창 크기 조정

Ctrl+w = 창의 크기 균등 
Ctrl+w _ 수평 분할에서 창의 크기를 최대화 
Ctrl+w | 수직 분할에서 창의 크기를 최대화 

괄호 이동

괄호로 시작하는 위치로 이동할 때는   '[{' 를 통하여 이동할 수 있다.  반대로 }로 이동하려면 ']}'  를 사용하면 괄호의 끝으로 이동된다.  코드상 어떤 보고 있는 부분이 어떤 함수에 소속되어 있는지 확인할 때 많이 사용된다. 커서가 괄호에 있을때에는 %를 통하여 일치하는 괄호 찾기를 할 수 있다.

man page

man 페이지를 보기 원하는 위치에 커서를 두고 Shift + k를 입력하면 해당 커서의 man 페이지를 볼 수 있다.

이전 명령 반복

. 을 눌르면 이전에 했었던 작업을 한번 더 실행한다. 반복적인 작업에 유용하게 사용된다.

외부명령

:! 명령어


텍스트 위치 마킹

m[임의의 알파벳]: 마킹

`[마킹한 알파벳]: 마킹된 위치로 돌아갈 때 (` 기호는 backtick을 의미)

마킹의 종류 세가지

  • A-Z : 전역마킹 - 현재 파일을 포함한 다른 파일 간의 마킹이 가능하다. (다른 파일간에도 이동)
  • a-z : 지역마킹 - 현재 파일 내에서만 마킹이 가능하다. (현재 파일에서만 이동)
  • ~/.viminfo 파일에서 자동으로 지정한 0-9

블럭의 맨 앞 or 맨뒤에 문자열 추가하기 

 일괄적으로 블럭 지정한 부분에 동일한 텍스트를 맨 처음 or 맨뒤에 넣을 때 사용할수 있다.

 맨앞에 넣기

 :norm i문자열


 맨뒤에 문자열 추가.

 :norm A문자열


블럭을 지정하고 맨 앞에 //를 넣음으로써 주석 처리를 할 수 있다. 
 ex) :norm i//

vim Help 페이지 사용하기

:help

위의 명령어로 vim 에디터에 대한 헬프 페이지를 통하여 사용방법을 확인할 수 있다. 밑줄이 쳐진 주제에 대해서 아래의 이동 명령어를 통해 이동하고 되돌아 올수 있다.

 주제로 이동  Ctrl + ] 
 되돌아오기   Ctrl + t



Tags

Read Next

  1. 키 이동은 잘 못 정리해 놓으셨네요 h가 왼쪽 l이 오른쪽 j가 아래쪽 k가 위쪽입니다

*

*

티스토리 툴바