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(),
  },
}