LINUX
2019.05.29 / 01:00

9. 코딩 최적화 vi(vim) 세팅

탁돌이개발자
추천 수 4

이번 포스팅은 필수적인 부분은 아니나, 본인과 같이 "나는 vi(vim)로 코딩을 하겠어!" 라는 사람들에겐 나름 필수(?) 적인 세팅이다.

들어가기 앞서 본인의 시스템 환경은 "우분투 16.04LTS"버전이다. (CentOS에서 갈아탐)


1. 순정 vi의 문제점
우선 아무 설정도 되어있지 않은 순정 vim 상태의 경우를 보자.

간단한 C++ 코드를 짠 것인데 이거 문제가 생각보다 많다.
1-1. 자동 들여쓰기(인덴트; Indent)가 안된다.
 - 중괄호{ 를 쓰고 엔터치고 탭(Tab) 쳐서 하나하나 들여쓰기를 해줘야된다.
1-2. 탭(Tab)의 길이가 너무 길다.
 - 일반적으로 Tab은 공백 4칸과 같은데, 위 사진에서 보이는 Tab은 공백 4칸치곤 너무 길다.
1-3. 줄 번호가 없다.
 - vi 초고수가 아닌 이상에야 코드 실행 후에는 언제나 에러와 마주하게 되는데, 에러 발생 라인을 알려줘도 라인번호가 없으면 무용지물이다. 코드 길이가 길어지면 줄 번호가 필수인 것은 말할 것도 없다.
1-4. 클립보드로 코드 복사가 안된다.
 - 이건 시스템마다 케바케인데 대부분의 경우, vi에서 작성한 코드를 y나 yy로 복사하면 클립보드로 복사되는 것이 아니라서 vi 이외의 시스템(인터넷, 카톡 등)에는 붙여넣기가 안된다.

2. 수정 방법
위에서 살펴본 4가지 한계만 생각하더라도 수정할 가치는 충분하다.

2-1. 클립보드로 복사 기능을 이용하기 위한 xclip 설치

sudo apt-get install xclip
본인은 이미 설치되어 있어서 apt 실행 결과 업그레이드만 됨


2-2. 모든 계정이 수정의 혜택을 누릴 수 있도록 vim의 메인 파일을 수정
(만약 특정 유저만 수정 효과를 보고 싶으면, ~/.vimrc 의 내용을 수정해주면 된다.)

sudo vim /etc/vim/vimrc

vim의 메인 파일을 수정하기 위해선 루트 권한이 필요하다.


2-3. 위 명령어를 통해 vimrc파일을 열었으면 이것저것 써 있을텐데 다 무시하고 맨 아랫줄에 아래의 코드들을 추가한다

set number set ts=8 set sw=4 set sts=4 set smartindent set cindent " Clipboard set clipboard=unnamedplus vmap <C-c> y:call system("xclip -i -selection clipboard", getreg("\""))<CR>:call system("xclip -i", getreg("\""))<CR>

위에서부터 차례대로 설명하면 라인번호 설정, Tab 간격 & 자동 들여쓰기 설정, 클립보드로 Ctrl+C를 이용해 복사 설정 기능이다. (" 는 주석표시)


3. 결과 확인
수정 결과를 확인해보기 위해 코드를 작성해보면 아래와 같다.

보다시피 줄번호, 탭 간격 조정, 자동인덴트 설정이 정상적으로 작동하는것을 확인할 수 있다.

또한 Ctrl+C를 이용한 클립보드로의 복사는 아래와 같이 할 수 있다.

3-1. Shift+V를 이용하여 복사할 영역 블록 지정


3-2. Ctrl+C를 이용하여 클립보드로 복사


4. 알아두면 좋은 "자동 정렬" 기능
이건 소소한 팁인데 가끔씩 코드를 짜다 보면 초월코딩을 하게 되어 인덴트가 개판인 경우가 발생한다.

이건 좀 심한듯

이런 경우에는 위에서 썼었던 비주얼 라인 블록 지정을 이용하여 전체 줄맞춤을 할 수 있다.

4-1. gg를 입력하여 첫째줄로 이동 후, Shift+V, (Shift가 눌린 상태에서)G 를 이용하여 전체 선택 후 = 를 눌러 전체 줄맞춤 수행

(정렬 전) 비주얼 라인 블록 지정
(정렬 후) 14 lines indented



5. 끝
여기까지 해서 vi로 코딩하기 위한 편리한 기능들의 설정 및 팁에 대해 알아보았다. 사실 이것 말고도 더 있겠지만, 아직까진 이정도면 충분한 것 같으므로 일단은 이정도면 만족한다. 만일 더 좋은 내용들이 있다면 추후 더해나가겠다.