Neovimの設定(Lazy+lsp-zero)など【備忘録】
今回はNeovimをLazyとLsp-zeroを使って設定する
まずは
rm -rf ~/.config/nvim
rm -rf ~/.cache/nvim
rm -rf ~/.local/share/nvim
rm -rf ~/.local/state/nvim
で、nvimをきれいにしよう。(バックアップを取っとくように)
そして
~/.config/nvim/init.lua
を作る
~/.config/nvim/init.luaの内容は以下のようにする
local o = vim.opt
o.number = true
--o.relativenumber = true
o.tabstop = 2
o.shiftwidth = 2
vim.api.nvim_set_keymap('i', 'jj', '<esc>', {noremap = true})
vim.api.nvim_set_keymap('i', 'jk', '<esc>', {noremap = true})
vim.api.nvim_set_keymap('n', 'gj', '5j', {noremap = true})
vim.api.nvim_set_keymap('n', 'gk', '5k', {noremap = true})
vim.api.nvim_set_keymap('n', 'gl', '5l', {noremap = true})
vim.api.nvim_set_keymap('n', 'gh', '5h', {noremap = true})
vim.g.mapleader = " "
vim.keymap.set("n", "<leader>pv", vim.cmd.Ex)
--color-------------------------------------------------------------------------------------
-- LSPやCoCの補完候補の背景色を灰色に変更する
vim.cmd('highlight Pmenu cterm=none ctermbg=181 guibg=#b1854a') -- 補完 候補メニューの背景色を灰色 に変更
vim.cmd('highlight PmenuSel cterm=none ctermbg=180 gui=bold,reverse guibg=#b79867 guifg=NONE') -- 選択中の補完候補の背景色を灰色に変更
-- <> の中の文字色を変更
vim.cmd('highlight String ctermfg=166 guifg=#ff7700')
-- 行番号の文字色をより薄い灰色に変更
vim.cmd('highlight LineNr ctermfg=250 guifg=#c0c0c0')
-- {} の色を濃い茶色に設定
vim.cmd('highlight cCppTemplate ctermfg=130 guifg=#8b4513')
--end color--------------------------------------------------------------------------------
--Lazy-------------------------------------------------------------------------------------
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
-- Auto-install lazy.nvim if not present
if not vim.loop.fs_stat(lazypath) then
print('Installing lazy.nvim....')
vim.fn.system({
'git',
'clone',
'--filter=blob:none',
'https://github.com/folke/lazy.nvim.git',
'--branch=stable', -- latest stable release
lazypath,
})
print('Done.')
end
vim.opt.rtp:prepend(lazypath)
require('lazy').setup({
{
"windwp/nvim-autopairs",
config = function() require("nvim-autopairs").setup {} end
},
{
'VonHeikemen/lsp-zero.nvim',
branch = 'v2.x',
dependencies = {
-- LSP Support
{'neovim/nvim-lspconfig'}, -- Required
{ -- Optional
'williamboman/mason.nvim',
build = function()
pcall(vim.cmd, 'MasonUpdate')
end,
},
{'williamboman/mason-lspconfig.nvim'}, -- Optional
-- Autocompletion
{'hrsh7th/nvim-cmp'}, -- Required
{'hrsh7th/cmp-nvim-lsp'}, -- Required
{'L3MON4D3/LuaSnip'}, -- Required
}
},
{"nvim-treesitter/nvim-treesitter", build = ":TSUpdate"},
})
-- LSP ------------------------------------------------------------------------------------
local lsp = require('lsp-zero').preset({})
lsp.on_attach(function(client, bufnr)
lsp.default_keymaps({buffer = bufnr})
end)
require('lspconfig').lua_ls.setup(lsp.nvim_lua_ls())
lsp.setup()
local cmp = require('cmp')
local luasnip = require('luasnip')
cmp.setup {
sources = {
{ name = 'nvim_lsp'},
{ name = 'luasnip'},
},
mapping = {
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
--elseif has_words_before() then
--cmp.complete()
else
fallback()
end
end, { "i", "s" }),
['<S-Tab'] = cmp.mapping.select_prev_item(),
['<CR>'] = cmp.mapping.confirm(),
},
}