티스토리 뷰
리눅스에는 터미널환경에서 사용가능한 다양한 텍스트 편집기가 있다. 그 중 대표적인 편집기로 vim이 있다. vim은 vi의 클론으로 vi의 기본적인 명령어를 그대로 계승하고, 거기에 사용자가 더 사용하기 쉽도록 여러 기능을 집어넣은 편집기로 이해하면 되겠다.
vim의 가장 큰 특성은 .vimrc파일에 설정값을 넣어놓으면 그 설정값에 따라 편집기를 자유자재로 설정할 수 있다는 것이다. .vimrc파일은 언제나 홈 디렉토리에 존재해야한다. 이 게시글은 다음과 같은 순서로 설명할 예정이다.
1. .vimrc 파일 생성하기
2. .vimrc 파일에 설정 값 넣기
지금부터 하나씩 알아보도록 하겠다.
* 이 글에는 vi 편집기의 사용법에 대한 내용은 없습니다.
1. .vimrc 파일 생성하기
.vimrc 파일은 언제나 홈 디렉토리에 존재해야 하므로, 홈 디렉토리로 이동하여 .vimrc를 생성한다.
cd ~
vim .vimrc
위와 같이 명령어를 입력하면 홈 디렉토리에 .vimrc가 생성되고 vi 편집기가 열릴 것이다.
2. .vimrc 파일에 설정 값 넣기
아래의 설정 값은 현재 내 컴퓨터에서 사용중인 설정 값이다. 각각의 설정 값들이 어떠한 의미를 가지는지 하나씩 알아보도록 하자.
1) Highlight
if has("syntax")
syntax on
endif
위 설정 값은 문법이 존재한다면 하이라이트를 켜라는 명령어이다. 우리가 생각하는 visual studio, pycharm과 같은 IDE에서 문법이 강조되는 것과 같이 문법 하이라이트 기능을 켠다고 생각하면 된다.
set hlsearch
이 값을 넣으면 ?또는 /로 vim내의 특정한 문자열을 검색할 때 매칭되는 문자열을 하이라이트해주는 기능이다. 위와 같이, 검색 시 한눈에 잘 보이기 때문에 꽤 유용하다.
2) Line number
set nu
위 설정을 켜면 그림과 같이 라인 넘버가 출력된다. gcc, python 프로그래밍을 할 때, 에러와 함께 에러난 코드의 라인을 출력해주는데, 이 설정을 켜면 한층 더 찾기가 쉬워진다.
3) Indent
set autoindent
set cindent
위 설정을 켜면 문법에 따라서 자동으로 들여쓰기를 해준다. 우리가 사용하던 IDE의 기능들이 대부분 구현되어 실제 코딩시에도 상당히 편리하다.
4) Tap space
set ts=4
set sts=4
set shiftwidth=4
위 세가지 설정 값은 tab 너비에 관련된 설정 값이다.
ts - 문서의 '\t' 값을 출력시 몇 개의 스페이스로 보여줄지에 대한 설정 값
sts - tab 키를 눌렀을 때 몇 개의 스페이스를 입력할 것인지에 대한 설정 값
shiftwidth - 자동 들여쓰기를 할 때의 스페이스 설정 값
5) Status
set laststatus=2
마지막 창에 statusline을 보여주는 설정 값이다.
0 - 출력안함
1 - 창이 2개 이상일 때 출력
2 - 항상 출력
6) Show match
set showmatch
이 설정값을 적용하면, 위 그림과 같이 닫는 괄호를 입력 시 짝이 되는 괄호를 하이라이트 해준다.
7) Smart setting
set smartcase
set smarttab
set smartindent
위 설정값은 검색, 탭, 들여쓰기 시 자동으로 설정해 준다고 한다.
smartcase - no automatic ignore case switch
smarttab - ts, sts, sw 값을 참조하여, 탭과 백스페이스의 동작을 보조해준다.
smartindent - 자동 들여쓰기 시 #include 와 같은 전처리 구문을 판단하여 들여쓰기를 하지 않는다.
8) Ruler
set ruler
위 그림과 같이 현재 커서 위치의 줄번호와 행번호를 출력해준다.
9) Encoding
set fileencodings=utf8,euc-kr
위 설정을 하면, vim으로 파일을 열때, 그 파일의 인코딩 방식에 따라 맞춰서 연다. 보통 윈도우 메모장에서 작성된 텍스트는 기본값으로 euc-kr 인코딩을 가지고 있을 것이다. 따라서 윈도우에서 작성된 파일을 vim으로 열면, 리눅스 터미널은 utf8 형식을 기본적으로 사용하고 있기 때문에, 글씨가 깨져보일 것이다. 이러한 상황을 방지하기 위해서 utf8, euc-kr을 명시해주면, 인코딩 방식이 달라도 정상적인 출력을 보장한다.
10) 종합
여기까지 각 속성에 대해서 알아보았다. 지금 사용중인 설정 값을 아래에 정리해서 올렸다.
if has("syntax")
syntax on
endif
set hlsearch
set nu
set autoindent
set ts=4
set sts=4
set cindent
set laststatus=2
set shiftwidth=4
set showmatch
set smartcase
set smarttab
set smartindent
set ruler
set fileencodings=utf8,euc-kr
vim은 상당히 확장성이 좋은 에디터이다. 따라서 이 게시글에서 제시한 설정값들은 빙산의 일각에 불과하다. 필요에 따라서 더 많은 설정값을 적용해보기를 바란다.
참고
'Tools > Vim' 카테고리의 다른 글
[Vim]클립보드 복사&붙여넣기(Copy&Paste Clipboard) (10) | 2019.03.29 |
---|