2020년 새해 목표가 vim 배우기였다. 처음에는 hjkl부터 쩔쩔매곤 했지만, 이제는 vim을 시작한 지 벌써 1년이 다되어간다. 나름 익숙해져서 실제 코딩에서도 vim을 쓰고 있고, practical vim도 1회 정주행 했으며, 나름대로 매주 하나씩은 vimrc에 새로운 기능이나 플러그인을 넣는 것을 목표로 하고 있다. 사실 원래 나는 튜닝보다는 순정을 좋아하는 사람인데, vim의 경우에는 하나씩 꾸미면서 만들어가는 게 코딩하는 맛이 있더라.
오늘은 내가 좋아하는 vim 플러그인들을 소개하고자 한다. 사실 vim 시작한 지 1년도 안된 초짜라서 내가 대단한 뭔가를 추천할만한지는 모르겠다. 난 주로 명령이나 기능 추가는 vimrc에서 넣고, 플러그인으로는 주로 삭막한 vim을 이쁘게 꾸밀 수 있는 것들을 좋아한다. 그래서 아래에 내가 추천하는 플러그인은 주로 비주얼적인 부분이 많은 편이다.
참고로 내가 하는 일은 주로 딥러닝 연구이다. 언어는 주로 Python을 쓰고 있다. Vim 유저인 독자들에게는 이해가 안 될 수도 있겠지만, 내가 작업하고 있는 OS는 Windows이다.. 비컴공과 공대생이 이렇다. 터미널 소프트웨어는 ConEmu를 쓰다가 최근에 Terminus를 시작했는데, 테마를 넣기 쉽고 투명한 비주얼이 맘에 들었다.
내가 쓰는 플러그인들을 크게 4가지 종류로, "강추/설치만 해둬도 편리한 것들/대중적인 것들/별로 좋아하지는 않는 것들"로 나눠서 정리하고자 한다.
Plugin 'frazrepo/vim-rainbow'
괄호를 무지개색으로 다양하게 색깔을 입히는데, 이때 매칭 되는 괄호들은 같은 색상이 되도록 해준다. 그리고 그 괄호 레벨 안에 있는 연산자들은, 괄호와 같은 색상으로 해줘서 어떤 레벨 안에 있는지 알려준다. 정말 이쁘고 실용적이다! 이런 식의 rainbow parentheses 플러그인은 종류가 많으니 취향에 따라 다들 하나씩은 써볼 만하다.
Plugin 'nvie/vim-flake8'
Python에서는 나름대로 정리해진 코드 스타일 룰이 있다. 띄어쓰기는 어떻게 하는 게 답이고, 개행은 어떻게 하는 게 올바르다, 이런 것들. 그걸 검사해주는 툴도 있는데, Pylint, Pycodestyle 등이 있다. 사용하려면 검사하고자 하는 filename.py 파일에 대해 커맨드로 "pycodestyle --first filename.py"와 같이 커맨드를 날려서 결과를 확인할 수 있다. 자세한 내용은 이 분의 블로그의 일독을 강추한다.
이때 vim-flake8 플러그인은 vim 내부에서 바로 실행할 수 있는 코드 스타일 툴이다. 이게 라인 넘버를 직접 손으로 찾아갈 필요 없이, vim 내부에서 그 라인으로 바로 이동할 수 있어서 더 편리하다. 뿐만 아니라 커맨드 창에 결과를 뿌려주는 게 아니라, 코드 자체에 결과를 직접 표시를 해주는 방법이라서, 더 편리하다.
Plugin 'nathanaelkane/vim-indent-guides'
아마 예전에 비주얼 스튜디오에서 C언어 코딩할 때 이런 기능이 있었던 것 같은데, indent level을 줄로 표시해주는 기능이다. 별거 아닌데 이런 식으로 시각화를 돕는 것들은 코드를 보기 편하게 해 줘서 참 좋다.
Plugin 'machakann/vim-highlightedyank'
yank로 복사한 부분을 하이라이트 해준다. 사실 복사라는 게 어떻게 되고 있는 건지 눈으로는 안 보이는 건데, 그걸 시각화해주니까 꽤 좋다. 원래 Kile에서 vi 쓸 때 이런 기능이 있었는데, 이게 vim에도 있지 않을까 싶어서 알아보니까 있었다.
Plugin 'osyo-manga/vim-anzu'
search 할 때 나타난 단어의 총 개수와, 해당 단어가 몇 번째 단어인지도 보여준다. 있으면 좋다.
Plugin 'yuttie/comfortable-motion.vim'
ctrl+f 등으로 스크롤할 때, 스무스하게 보여준다.
사실 이게 꼭 좋다고는 말하기 힘든데, 조절하는데 적응이 필요해서 그렇다.. 그래도 기분이 산다..ㅋㅋ
Plugin 'ehamberg/vim-cute-python'
in, sqrt, sum 같은 기호들을 진짜 수학 기호처럼 표시해준다. np.sqrt 이것도 가능함. 그냥 이쁨.
Plugin 'itchyny/vim-cursorword'
커서가 놓인 단어에 밑줄을 그어준다. 어제 설치해서 쓰는 중.
Plugin 'bad-whitespace'
문자열 끝 공백을 붉은색으로 표시해주고, 삭제해주는 기능도 제공한다. 이것도 Pylint라던가 Pycodestyle 같은 걸로 잡을 수 있지만, 아예 플러그인으로 표시해서 잡는 것도 나쁘지 않다.
구글에 best vim 플러그인 10선이라고 검색하면 항상 빠짐없이 나오는 것들인, 너무나 대중적인 것들은 내가 다시 소개하기도 애매해서, 이런 것들은 따로 정리했다.
Plugin 'VundleVim/Vundle.vim'
일단 vundle이 있어야 플러그인 설치하니까.
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
이거도 넣고 테마도 넣으면 꽤 화면이 살아난다.
Plugin 'preservim/nerdcommenter'
이것도 의외로 잘 쓰고 있다. 전에는 주석 넣고 싶으면 visual 영역을 처리해서 맨 앞에 #을 넣었는데, 그것보단 nerdcommenter 쓰는 게 편하더라.
Plugin 'scrooloose/nerdtree'
이거 겁나 대중적인데, 사실 난 잘 이걸 안 쓴다..
Plugin 'tpope/vim-surround'
예를 들면 yss'로 '을 붙일 수 있다.
Plugin 'AutoComplPop'
Plugin 'hynek/vim-python-pep8-indent'
Plugin 'chiel92/vim-autoformat'
Plugin 'Raimondi/delimitMate
Plugin 'ervandew/supertab'
Plugin 'terryma/vim-expand-region'
Plugin 'peterrincker/vim-argumentative'
Plugin 'vim-python/python-syntax'
Plugin 'tiagofumo/vim-nerdtree-syntax-highlight'