나에게 vim이란 라즈베리파이 같은 리소스나 메모리등 작업 환경이 열악하거나 불가피한 사유로 인터넷을 사용하지 못하는 상황에서 가끔 쓰던 편집기였다.

hjkl로 움직이고, visual mode, normal mode 등등 처음에는 진입장벽이 높게 느껴져서 손이 안가다가, 마우스를 쓰는게 너무 귀찮아서 일주일만 마음먹고 연습(?)을 했더니 이제는 vim이 없으면 코딩을 할 맛이 안나게 될 정도로 익숙해져버렸다.

vim으로 갈아타게 된 결정적인 계기는 VSCode에서 지원하는 c/cpp extension이 메모리를 너무 잡아먹어서이다.. (물론 vim도 이것저것 많이 깔면 느려지겠지만)
아무튼 내가 생각하는 vim의 장점은 이렇다

  • 프로그램이 light하고 seamless 하다
  • vim script 작성으로 기능 커스터마이징이 자유롭다
  • 처음 learning curve만 극복하면 작업효율이 엄청 상승한다
  • 간지난다

neovim 설치하기

neovim은 terminal buffer를 지원하는 좀 더 기능이 확장된 형태의 vim이다. terminal buffer말고도, 24bit true color 지원 등 더 다양하고 좋은 기능들을 탑재한 vim이라, neovim을 설치하였다.
내가 사용하는 os:q 는 ubuntu이므로 Debian install 가이드를 따라 설치를 진행하였다.

sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt-get update
sudo apt-get install neovim
sudo apt-get install python-dev python-pip
sudo apt-get install python3-dev python3-pip

설치가 완료되면 터미널에 nvim을 치면아래의 그림처럼 neovim이 실행된다.

기본 설정

neovim도vim과 똑같이 vimrc같은 설정파일을 수정하여 기본적인 설정을 할 수 있다.
설정 파일의 경로는 ~/.config/nvim이며 이 경로에 파일을 직접 생성해야 한다.

$ mkdir ~/.config/nvim
$ cd ~/.config/nvim
$ touch init.vim

아래는 현재 사용중인 init.vim의 설정이다.

set iskeyword+=-
set formatoptions-=cro

syntax on
set hidden                  " 버퍼를 수정한 직후 버퍼를 감춰지도록 함
set wrap                    " 자동 줄 바꿈
set encoding=UTF-8          " UTF-8 인코딩
set t_Co=256                " 256 칼라 지원
set number                  " 라인 수 표시
set ruler                   " 커서 표시
set cursorline              " 현재 커서 하이라이팅
set pumheight=10            " 팝업 메뉴 크기 조정
set showcmd                 " 명령어를 상태라인에 보여준다
set mouse=a                 " 마우스 사용 가능
set tabstop=2               ""
set shiftwidth=2            ""
set smarttab                ""
set smartindent             " 새로운 라인 시작 시, auto indentation 수행
set autoindent              " 자동 들여쓰기
set expandtab               " tab을 space로 확장
set showmatch               " 매칭되는 괄호 표시
set background=light
set showtabline=2
set noshowmode
set nobackup                " 백업파일을 생성하지 않는다
set signcolumn=yes
set updatetime=300
set timeoutlen=100
set clipboard=unnamedplus   " 클립보드 복사&붙여넣기 허용
set incsearch               " 점진적으로 찾기
set hlsearch                " 검색어 하이라이팅
set nowrapscan              " 찾기 파일 맨 끝 도달시, 계속하여 찾지 않음
set guifont=Hack\ Nerd\ Font " 폰트 설정
set ignorecase              " 검색시 대소문자 구별 X

let $TERM="xterm-256color"  " true color

" 파일 열기 마지막 부분 저장
if has("autocmd")
    " When editing a file, always jump to the last cursor position
    autocmd BufReadPost *
    \ if line("'\"") > 0 && line ("'\"") <= line("$") |
    \   exe "normal g'\"" |
    \ endif
endif