NeoVim Astronvim 설치 및 사용법 총정리

서론

개삽질 끝에 총정리할수 있게 되었습니다.  개빡...nvim 쓰려다 화가 많아짐. vim 슈퍼유저라는 자만심에 덤볐다가 개까이고 겨우 쓸만큼 익히는데 일주일 걸렸습니다. 얼마 후 까먹을 나 자신을 위한 정리입니다.

레퍼런스

평소라면 레퍼런스를 마지막에 놓지만, 이 게시물은 레퍼런스가 매우 중요합니다. 아오 진짜

사전준비

아무런 개발 환경 설정을 하지 않은 깨끗한 터미널을 준비해주세요! 이게 뭔... amd64 linux pc 에 aarch64 크로스컴파일 설정해놓은 터미널에서 설치했더니 aarch64 라이브러리들이 설치되서 개판나더군요. 대환장

MacOS



iTERM2 설치하세요. 기본 Terminal 은 truecolor 를 지원 안해서 이딴 화면 보여줍니다. 캬악! 이 시대에 트루컬러 미지원이 말이 되냐! 이걸로 또 얼마나 삽질을 한건지!
brew install iterm2

Nerd font

폰트 설치 안하면 기껏 nvim 설치해봐야 아이콘 다 깨져보입니다. neovim 용 D2Coding nerd 폰트 참조하여 설치 및 terminal 기본 폰트 설정하세요.

macos 기준 왼쪽 상단 iterm2 -> settings

Neovim

모던하게 vim 개조해서 Pull Request 했더니 vim 개발자가 받아주질 않아서 빡쳐서 NeoVim 으로 만들었다는데, 진실은 모르겠습니다. 아무튼 이름부터 마음에 듭니다.

NeoVim 설치

2024년 1월 기준 0.9 버전 이상 설치하세요. 저처럼 삽질하지 말고
Neovim Install 링크 참조

Ubuntu

apt 는 0.5 버전인가 그렇고 appimage 다운받아서 PATH 에 속한 곳에 적당히 넣어두세요.  전 /usr/local/bin 에 넣어뒀습니다. 나중에 업데이트 할 일 있으면 수동으로 하면 됩니다.
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage
chmod u+x nvim.appimage
sudo mv nvim.appimage /usr/local/bin/nvim

MacOS

brew 설치
brew install neovim
% nvim --version
NVIM v0.9.5

Astro Nvim



  1. 이뻐서 
  2. 누가 추천해줘서
이딴게 설치한 이유일까 싶지만, 이만한 이유도 없습니다. 이제 주로 Astronvim 홈페이지에서 놀게 됩니다. Astronvim Getting Started 자주 참조.

Astro Nvim 설치

혹시 모를 설정 백업하고 설치합니다.
mv ~/.config/nvim ~/.config/nvim.bak
git clone --depth 1 https://github.com/AstroNvim/AstroNvim ~/.config/nvim
설치 끝! nvim 실행! 하면 위의 예쁜 화면이 나옵니다.

끝!

주요 경로

# 설정 경로
~/.config/nvim
# 설정 시작 lua 파일
~/.config/nvim/init.lua
# 플러그인 설치 경로
~/.local/share/nvim
# astronvim 사용자 플러그인 설치 경로
~/.config/nvim/lua/user/init.lua
뭔가 꼬이고 제대로 안된다? 저거 그냥 삭제해버리면 됩니다. 참 쉽죠?

Nvim + AstroNvim 사용법

Nvim 을 사용하려면 반드시 알아야하는 내용들을 정리했습니다. 대부분 Astronvim Getting Started 에 있는 내용들입니다. 다만 이 문서도 개판인 경우가 많아서  nvim 0.9.5 기준으로 삽질한 기록입니다. 0.10에서도 비슷하겠죠..?

Key mapping

어지간한 key mapping 은 Astronvim key mapping 여기서 확인할 수 있습니다.

Custom Key mapping

~/.config/nvim/init.lua 파일에 아래 내용을 넣습니다.
vim.keymap.set('n', '<F6>', 'oprintf(" %d %s : \\n", __LINE__, __func__);<Esc>7b' )
이제 F6 키를 누르면 저 명령이 전달됩니다. vim 극 초기부터 써왔던 제 키맵입니다. ㅋ 디버거를 쓰고 있어도 아직도 printf를 버릴수가 없네요.
첫번째 인자인 'n' 에 대한 내용은 여기 링크 를 확인하세요.

Leader Key

Leader key 가 뭐임?? 정체는 모르겠습니다만, 암튼 Astronvim 에서는 Normal Mode 에서 <Space> 입니다. <Space> 를 누르고 잠시 기다리면 아래와 같은 화면이 나옵니다. 이것만 알아도 키맵 외우는 시간을 확 줄일 수 있습니다.

user/init.lua

사용자 설정을 넣는 파일입니다. 다만 문서가 뒤죽박죽이라 하... 아래 colorscheme 에서 설명합니다. 정확한 위치는 ~/.config/nvim/lua/user/init.lua 입니다.

Astrocommunity

AstroNvim 기본 설치만 해도 매우 쓰기 좋습니다만, Astrocommunity 에서 만든 플러그인도 매우 잘 되어있어 이걸 활용하면 쉽고 간편하게 설치할 수 있습니다. astrocommunity 설정은 ~/.config/nvim/lua/plugins/community.lua 에 넣습니다.
삽입 가능한 플러그인은 astrocommunity github의 lua/astrocommunity 디렉토리에서 목록을 찾아 볼 수 있습니다. 언어팩은 pack 폴더에 있습니다.
아래와 같이 community.lua 파일에 넣으면 colorscheme.catppucin 을 설치합니다.
return {
  -- Add the community repository of plugin specifications
  "AstroNvim/astrocommunity",
  -- example of importing a plugin, comment out to use it or add your own
  -- available plugins can be found at https://github.com/AstroNvim/astrocommunity
  { import = "astrocommunity.colorscheme.catppuccin" },
}

colorscheme

위의 community 에 colorscheme 을 설치한다고 해서 바로 적용되는건 아닙니다. 이때 user/init.lua 에 아래와 같이 설정을 넣으면 됩니다. return 문법을 꼭 써야한다고 좀 알려줘요. 하...
return {
    colorscheme = "catppuccin",
}
nvim 을 실행하면 plugin 을 설치하고 colorscheme 이 catppuchin 으로 설정된 것을 확인할 수 있습니다. 기본은 astrodark 입니다.

Git

기본적으로 git은 Gitsigns 와 lazygit 이 설치되어있습니다. lazygit 은 따로 설치해놓으면 됩니다.
우분투에서는 apt install lazygit 맥에서는 brew install lazygit 으로 설치합니다.
:Gitsigns 로 사용할 수 있고 lazygit 은 <Leader>tl 로 사용할 수 있습니다. gitsigns 의 diffthis 기능 좋습니다. 텍스트 기반의 ui 에서 git 은 lazygit 을 사용하는게 편합니다.

LSP : Language Server Protocol

마소에서 만든 에디터용 언어 서버 프로토콜입니다. 언어 서버를 띄워놓으면 에디터와 통신해서 정보를 주고 받나봅니다. 아무튼 좋은겁니다. astrocommunity 를 설정하면 따로 설치할 필요도 없이 알아서 잘 설치해줍니다.

LSP : C++

C++ 은 언어 서버로 주로 clangd 를 사용합니다. mac에는 clang 이 깔려있어서 clangd 도 아마 깔려 있을거고, 리눅스에서는 깔아야할겁니다. (까는건 생략) 
위의 community.lua 에 아래 내용을 추가합니다.
  { import = "astrocommunity.pack.cpp" },

clangd

pack.cpp 를 깔아놔서 잘 동작할겁니다.

include thread 를 지웠더니 에러를 미리 알려주는군요. 조쿤요!

clang-format

코딩포맷은 매우*100 중요합니다! 전 집에서 코딩할때도 회사 코딩포맷을 사용하기 때문에 자동으로 설정해주는 clang-format 을 전역으로 설정해줍니다. ~/.clang-format 파일에 아래 내용을 써줍니다. clangd가 설치되어 있다면 따로 clang-format 은 설치할 필요가 없습니다.
BasedOnStyle: Webkit
저희 회사 코딩포맷은 Webkit 과 가장 비슷합니다. 약간 다른 점이 있는데 그 부분은 clang-format configurator 를 참고하여 조금씩 바꿔가며 설정해주면 됩니다. 회사에 설정을 공유해주면 이쁨 받겠죠?

후기

아직 nvim이 무르익지 않다보니 설정의 어려움이 컸는데, 설정해놓고 보니 많은 부분에서 vim 의 아쉬움을 해결할 수 있어서 nvim 으로 갈아탈 수 있게 되었습니다.. 이제 좀 더 많은 경험을 쌓아서 블로깅을 해둬야겠습니다.

댓글

이 블로그의 인기 게시물

WSL2 Ubuntu 20.04 및 네트워크 설정

git pull 을 했더니 branch가 갈라지는 경우

리눅스 멀티코어를 사용하는 tar 압축/해제