본문 바로가기

SW, HW 소개

Neovim; DevOps에 최적인 vim 에디터를 업그레이드 해보자

0. 터미널(콘솔)에서 사용하는 에디터

많은 경우 윈도우를 사용하는 개발자는 VSCode와 같은 GUI기반의 IDE에서 대부분의 작업을 하고 터미널에서 복잡한 편집 작업을 하기 않기 때문에, 윈도우의 메모장 수준인 nano와 같은 간단한 편집기를 사용하는 일 이 많았다. 하지만, DevOps환경에서 개발자는 보다 많은 작업을 터미널에서 하게 되고, 설정파일과 배포에 필요한 작업파일뿐 아니라, 가끔은 소스코드에 대한 편집작업도 터미널에서 하게 된다.

 

터미널에서 사용할 수 있는 에디터에는 

  • vi계열의 에디터
  • emacs계열의 에디터
  • 기타, nano, ne, 등

이 있는데, 보통 리눅스 계열의 OS에 기본으로 설치되어 있기도 하고, 개인적으로도 vi계열의 에디터을 좋아한다. vi는 vim (vi improved) 버전이 일반적으로 많이 사용되고 있는데, 몇 년 전부터 확장성이 좋은 lua API를 지원하는 Neovim이 인기를 얻고 있다. 오늘은 Neovim을 설치하고 사용하는 방법에 대한 기억을 정리하고자 한다.

1. Neovim과 Plugin manager 설치

a. Neovim 설치

우분투나 맥 OS는 자주 사용하는 패키지 관리자를 사용하면 쉽게 설치할 수 있다. 윈도우는 아래 공홈의 "Install Now"링크를 따라 프로그램을 다운로드하고 설치할 수도 있고,

 

Home - Neovim

News Neovim 0.10   2024.05 Vim Boss   2023.08 More… Impressions "Neovim is exactly what it claims to be. It fixes every issue I have with Vim." —Geoff Greer "Full-screen Neovim looks cool as hell!" —DHH "A nice looking website, that’s one thing

neovim.io

아래와 같이

 

옵션이 따로 없기 때문에, 설치할 위치를 변경할 계획이 없다면, winget으로 쉽게 설치해도 된다.

 

winget install neovim

 

터미널에서 nvim.exe를 바로 호출하기 위해서는 환경변수 PATH에 등록해 주어야 한다. Win+R을 눌러 입력창에 "sysdm.cpl"을 넣고 실행하면 나오는 "시스템 속성"창에서, "고급"탭을 선택하고 "환경변수(N)..."을 선택한 다음 PATH를 편집해서 "C:\Program Files\Neovim\bin"을 추가하거나,

 

PowerShell을 이용해서 아래 명령으로 추가해도 된다.

 

[System.Environment]::SetEnvironmentVariable('path', "C:\Program Files\Neovim\bin;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

b. Plugin manager 설치

Neovim은 lua API를 사용해서 원하는 대로 확장이 가능한 것이 장점이다. 이 장점을 최대한 활용하기 위해서는 vim의 Vundle과 같은 plugin manager를 설치하고, 원하는 plugin을 설치해야 한다. Neovim에 사용할 수 있는 plugin manager는 packer(또는 packer에서 나온 lazy.nvim, pckr.nvim)와 vim-plug가 대표적이다.

  • packer를 설치하고 이용하는 방법

packer공홈의 설명을 보면 윈도우에 설치하는 방법이 나와 있는데, 명령 프롭프트(CMD나 PowerShell)를 열고 아래 명령을 실행하면 packer가 다운로드된다.

 

git clone https://github.com/wbthomason/packer.nvim %LOCALAPPDATA%\nvim-data\site\pack\packer\start\packer.nvim

 

설치가 끝나면 packer를 이용하기 위해 "%LOCALAPPDATA%\nvim"폴더를 만들고,

 

mkdir %LOCALAPPDATA%\nvim

 

init.lua파일을 만들어 아래와 같이 넣으면 plugin manager를 사용할 수 있다.

 

return require('packer').startup(function(use)
  -- Packer can manage itself
  use 'wbthomason/packer.nvim'

  -- Add your plugins here
  use 'ellisonleao/gruvbox.nvim'
  -- Plugin을 아래에 추가
end)

 

다시 nvim을 실행하고

 

:PackerInstall

 

명령을 입력해서 실행하면 설치가 완료된다.

 

  • vim-plug를 설치하고 이용하는 방법

packer는 최근에는 업데이트되고 있지 않기 때문에 packer를 선호하는 개발자는 lazy.nvim을 더 많이 사용하고 있다. 그에 반해 카카오에 근무하는 최준건 님이 개발하고 유지하고 있는 vim-plug는 지속적으로 업데이트와 함께 프로젝트 유지가 되고 있어서, 개인적으로 vim-plug를 더 선호하고 있다.

 

vim-plug를 설치하려면 PowerShell을 열고 아래와 같이 wget명령으로 "%LOCALAPPDATA%\nvim-data"아래에 다운로드해서 설치하거나,

 

wget https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim -OutFile "$env:LOCALAPPDATA\nvim-data\site\autoload\plug.vim"

 

CMD를 사용하면, 먼저 autoload 폴더를 만들고 curl로 다운로드 해서 설치한다.

 

mkdir %LOCALAPPDATA%\nvim-data\site\autoload
curl https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim -o %LOCALAPPDATA%\nvim-data\site\autoload\plug.vim

 

설정을 위해 packer에서 진행한 것과 동일하게 nvim폴더를 만들고

 

mkdir %LOCALAPPDATA%\nvim

 

아래와 같이 init.vim에 만든 다음,

 

call plug#begin()

  Plug 'ellisonleao/gruvbox.nvim'
  -- Plugin을 아래에 추가

call plug#end()

 

nvim.exe를 실행하고,

 

:PlugInstall

 

명령을 입력해서 실행하면 설치가 된다.

 

혹시, Neovim 실행 중 "... python provider error.."와 유사한 에러가 발생하면 init.vim에 python의 실제위치를 지정하는

 

let g:python3_host_prog = 'C:\Users\webia\.pyenv\pyenv-win\shims\python3'

 

라인을 추가하면 해결된다.

2. 몇 가지 유용한 Neovim Plugin들

vim에서 사용하는 plugin은 VimAwesome에서 검색할 수 있다.

 

Vim Awesome

Awesome Vim plugins from across the universe

vimawesome.com

a. vim-airline

Neovim의 맨 아래에 표시되는 status bar를 꾸며주는 plugin인데, 설치하는 것만으로도 화면의 느낌이 달라진다.

 

Plug 'vim-airline/vim-airline'

 

b. fugitive.vim

Git을 사용한다면 반드시 설치해야 하는 plugin이다. :Git, 또는 :G 로 어떤 git명령이든 바로 호출할 수 있다.

 

Plug 'tpope/vim-fugitive'

c. The NERD tree

VSCode처럼 왼쪽에 폴더 목록을 불러오고, VSCode처럼 클릭만으로 오른쪽 화면에 불러드릴 수 있는 오래된 plugin이다.

 

Plug 'scrooloose/nerdtree'

 

d. coc.nvim

coc는 (Conquery Of Completion)의 약자로 Neovim을 VSCode처럼 개발하기 편하게 만들어 주는 plugin이다. coc는 nodejs로 만들어진 plugin이어서 nodejs를 먼저 설치해야 한다.

 

Plug 'neoclide/coc.nvim', {'branch': 'release'}

 

coc로 지원되는 언어를 추가하려면,

 

:CocInstall coc-json

 

과 같이 CocXXXX명령을 사용한다. 이후 Neovim으로 편집 중 Pop-up 된 항목을 선택하려면, Ctrl-Y를 사용해 선택한다.