환경설정 경로

neovim을 실행하고 :h rtp 명령어를 입력하면 neovim이 시작될때 또는 실행될때 참조하는 경로를 볼수 있다.

h-rtp

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 목록을 볼수 있다.

Mason

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>를 공백(“ “)으로 설정.

요약

  1. create packer packer.lua
  2. install the plugin :PackerSync
  3. after 디렉토리에서 설정 (customization)

reference

Comments