LazyVim으로 쉽고 아름답게 vim 설정하기 🌸

좋아하는 텍스트 에디터가 있으신가요?

이런 질문을 받으면 저는 당연 vim이라고 할 것 같습니다. vscode 등 다른 에디터도 같이 사용하는 라이트 유저이지만 나름 긴 시간동안 같이 지내온 도구라 저도 모르게 정이 들었네요. 벌써 몇년이 지난 것 같은데, 개인적으로는 neovim(nvim)을 사용중입니다. 최근에 이 neovim 관련하여 재미있는 프로젝트를 알게되어 공유해볼까 합니다.

NeoVim

가볍게 neovim에 대해 이야기하고 가는 것이 좋을 것 같습니다. neovim은 vim을 기반으로한 에디터로 기존 vim에 확장성을 더한 에디터라고 봐주시면 좋을 것 같습니다. vim도 꾸준히 업데이트되고 있어 뭔가 사용자 관점에서는 크게 차이가 나지 않을 수 있지만, 어쨌던 neovim은 굉장히 인기있는 터미널 에디터입니다.

# Installation
brew install neovim

# Command
nvim

개인적으로는 zshrc에 alias vim=nvim 으로 별칭을 주어 사용중입니다.

LazyVim

Neovim(vim)을 설정하는 것은 재미있지만 번거로운 작업니다. 물론 junegunn님이 만들어주신 vim-plug를 사용한다면 어렵진 않지만, 그래도 이러한 것 하나하나에 시간을 쓰기 아까울 수도 있습니다. 그래서 LazyVim은 이러한 사람들을 위해 만들어진 프로젝트로 여러가지 플러그인과 설정을 자동으로 진행해줍니다.

Neovim config for the lazy LazyVim Repo

Installation

이름에 맞게 설치 자체도 간단하게 만들어두었습니다. Installation 문서가 워낙 잘 되어 있으며 참고하시면 바로 구성이 가능합니다.

# 기존에 사용하던 설정이 있었다면 백업부터
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak

# 설치 및 실행
git clone https://github.com/LazyVim/starter ~/.config/nvim
rm -rf ~/.config/nvim/.git
nvim

Run

이제 파일을 명시하지 않고 nvim을 실행하면 아래와 같은 화면이 나타납니다. 파일이나 문자열 패턴으로 찾는 기능부터 LazyVim 관리 메뉴등이 존재합니다. 개인적으로 fzf와 조합해서 파일을 찾곤 했는데, 이젠 굳이 그럴 필요가 없어졌네요.

파일 검색 시 Preview로 내용을 살짝 보여주기 때문에 원하는 파일을 조금 더 편하게 찾을 수 있습니다.

Config

neovim config 디렉토리와 동일하게 ~/.config/nvim/lua/config 하위에 설정 파일이 존재합니다. Icon, Color 등 여러가지 설정을 조정할 수 있고, Keymap 또한 원하는 조합으로 변경할 수 있습니다.

다만 차이가 있다면 config 하위에 keymaps.lua 등이 비어있는 상태인데 LazyVim에 사전 설정된 정보는 lazy.lua에서 미리 로드하고 나머지에 정의된 내용이 있다면 덮어써서 사용하게 됩니다.

Plugins

config와 유사하게 ~/.config/nvim/lua/plugins 하위에서 변경하거나 추가할 수 있습니다. 테마 색상을 예시로 들어보면 plugins 하위에 colorscheme.lua를 생성하고 tokyonight 쪽 문서 참고해서 변경해보면 아래와 같습니다.

-- lua/plugins/colorscheme.lua
return {
  {
    "LazyVim/LazyVim",
    opts = {
      colorscheme = "tokyonight-day",
    },
  },
}

개인적으론 밝은거 안좋아합니다. 극적인 효과를 위해 day로 선택했습니다.

Conclusion

개인 취향에 맞게 설정한다면 직접하는게 가장 좋은건 사실입니다. 다만 최고의 효율이 목적이거나 설정하고 꾸미는데 흥미가 있는게 아니라면 이미 잘 만들어진 환경을 사용하는 것도 좋은 방법이라고 생각이 드네요 :D