NeoVim with lua and packer
개발환경 설정 - NeoVim
환경설정 경로
neovim을 실행하고 :h rtp
명령어를 입력하면 neovim이 시작될때 또는 실행될때 참조하는 경로를 볼수 있다.
init.lua
NeoVim이 시작될때 가장 먼저 읽는 파일이다. .vimrc
파일과 역할이 똑같지만 함수, 변수를 정의할수 있다.
nvim 디렉토리 생성
$ mkdir ~/.config/nvim
$ mkdir lua
$ nvim init.lua
lua
디렉토리의 .lua
파일들은 init.lua
에서 require(include와 유사)할수 있다.
에를 들어 lua
디렉토리에 mingeun
이라는 디렉토리가 있고 그 밑에 init.lua
파일이 있는 경우 ,
nvim/init.lua
파일에서 require("mingeun")
으로 그 코드를 불러올수 있다.
packer
packer 는 플러그인 관리자이다.
git clone --depth 1 https://github.com/wbthomason/packer.nvim\
~/.local/share/nvim/site/pack/packer/start/packer.nvim
~/.config/nvim/lua/mingeun/packer.lua
-- This file can be loaded by calling `lua require('plugins')` from your init.vim
-- Only required if you have packer configured as `opt`
vim.cmd [[packadd packer.nvim]]
return require('packer').startup(function(use)
-- Packer can manage itself
use 'wbthomason/packer.nvim'
use 'nyoom-engineering/oxocarbon.nvim'
use 'wbthomason/packer.nvim'
use {
'nvim-telescope/telescope.nvim', tag = '0.1.1',
-- or , branch = '0.1.x',
requires = { {'nvim-lua/plenary.nvim'} }
}
-- Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
use('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate'})
end)
새로 추가한 패키지 설치
packer.lua
파일에 패키지를 등록한 다음 :so
:PackerSync
명령어를 실행하면 패키지가 설치된다.
lsp zero
lsp zero와 cmp를 사용하여 자동완성 기능을 추가할수 있다.
packer.lua
use({
'VonHeikemen/lsp-zero.nvim',
branch = 'v2.x',
requires = {
-- LSP Support
{'neovim/nvim-lspconfig'}, -- Required
{ -- Optional
'williamboman/mason.nvim',
run = function()
pcall(vim.cmd, 'MasonUpdate')
end,
},
{'williamboman/mason-lspconfig.nvim'}, -- Optional
-- Autocompletion
{'hrsh7th/nvim-cmp'}, -- Required
{'hrsh7th/cmp-nvim-lsp'}, -- Required
{'L3MON4D3/LuaSnip'}, -- Required
}
})
:Mason
명령어를 실행하면 사용중이거나 설치할수 있는 LSP 목록을 볼수 있다.
nvim-lspconfig에 의해 제공되는 LSP config 목록
clangd (C/C++)
$ brew install clangd
require'lspconfig'.clangd.setup{}
lsp.ensure_installed({
'clangd'
})
pyright
$ pip install pyright
require('lspconfig').pyright.setup{}
lsp.ensure_installed({
'pyright',
'clangd',
})
remap
lua
의 함수 사용. e.g. vim.keymap.set()
example
vim.g.mapleader = " "
vim.keymap.set("n", "<leaderk>pv", vim.cmd.Ex)
vim.keymap.set("n", "<leader>pv", vim.cmd.Ex)
- normal mode에서pv를 `:Ex`에 대응시킨다. vim.gi.mapleader = " "
- <leader>를 공백(“ “)으로 설정.
요약
- create packer
packer.lua
- install the plugin
:PackerSync
after
디렉토리에서 설정 (customization)
Comments