Skip to content

Instantly share code, notes, and snippets.

@kuchida1981
Created May 8, 2023 14:48
Show Gist options
  • Save kuchida1981/0e85f86477a8e98d86130ab4514c8ade to your computer and use it in GitHub Desktop.
Save kuchida1981/0e85f86477a8e98d86130ab4514c8ade to your computer and use it in GitHub Desktop.
neovim 設定
Plug 'Vimjas/vim-python-pep8-indent'
Plug 'mattn/calendar-vim'
Plug 'dag/vim-fish'
" Plug 'github/copilot.vim'
Plug 'neovim/nvim-lspconfig'
Plug 'williamboman/mason.nvim'
Plug 'williamboman/mason-lspconfig.nvim'
Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'hrsh7th/cmp-buffer'
Plug 'hrsh7th/cmp-path'
Plug 'hrsh7th/cmp-cmdline'
Plug 'hrsh7th/nvim-cmp'
" For vsnip users.
" Plug 'hrsh7th/cmp-vsnip'
Plug 'hrsh7th/vim-vsnip'
" For luasnip users.
Plug 'L3MON4D3/LuaSnip'
Plug 'saadparwaiz1/cmp_luasnip'
" For ultisnips users.
Plug 'SirVer/ultisnips'
Plug 'quangnguyen30192/cmp-nvim-ultisnips'
" For snippy users.
Plug 'dcampos/nvim-snippy'
Plug 'dcampos/cmp-snippy'
" " scala
" if has('python')
" " sbt-vim
" Plug 'ktvoelker/sbt-vim'
" endif
" " vim-scala
" Plug 'derekwyatt/vim-scala'
"
" Plug 'mattn/emmet-vim'
" " Plug 'h-hg/fcitx.nvim' おそい...
Plug 'Hoffs/omnisharp-extended-lsp.nvim'
Plug 'nvim-lua/plenary.nvim'
Plug 'jose-elias-alvarez/null-ls.nvim'
" 基本設定
set nowrap
set cursorline
set shell=fish
set wildignore-=*/tmp/*
set background=dark
set termguicolors
" colorscheme default
" バックアップ, スワップ, アンドゥ 関連ファイルの保存
set backup
set backupdir=$HOME/var/nvim/backup
set undofile
set undodir=$HOME/var/nvim/undo
set swapfile
set directory=$HOME/var/nvim/swap
" ヒストリ件数
set history=1000
" " grep コマンドは標準的なgrepで
set grepprg=grep\ -rnHI
"
"*****************************************************************************
"" キーバインド
"*****************************************************************************
" 生成した設定ファイルにあるキーバインド設定を解除
silent! vunmap J
silent! cunmap <C-P>
"
"*****************************************************************************
"" airline
"*****************************************************************************
" powerline フォントを使う (?)
let g:airline_powerline_fonts = 1
let g:airline_theme = 'luna'
"
"*****************************************************************************
"" python
"*****************************************************************************
let g:python_host_prog=$PYENV_ROOT.'/versions/neovim-2/bin/python'
let g:python3_host_prog=$PYENV_ROOT.'/versions/neovim-3/bin/python'
"
"*****************************************************************************
"" terminal
"*****************************************************************************
command! -nargs=* T split | wincmd k | resize 20 | terminal <args>
autocmd TermOpen * startinsert
tnoremap <C-w><S-n> <C-\><C-n>
"*****************************************************************************
"" LSP
"*****************************************************************************
lua << EOF
-- 1. LSP Sever management
require('mason').setup()
require('mason-lspconfig').setup_handlers({ function(server)
local opt = {
-- Function executed when the LSP server startup
on_attach = function(client, bufnr)
local opts = { noremap=true, silent=true }
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
vim.cmd 'autocmd BufWritePre * lua vim.lsp.buf.format(nil, 1000)'
end,
-- capabilities = require('cmp_nvim_lsp').update_capabilities(
-- vim.lsp.protocol.make_client_capabilities()
-- )
capabilities = require('cmp_nvim_lsp').default_capabilities()
}
require('lspconfig')[server].setup(opt)
require('lspconfig').omnisharp.setup {
cmd = { "dotnet", "/home/kosuke/.local/share/nvim/mason/packages/omnisharp/OmniSharp.dll" },
enable_editorconfig_support = true,
enable_ms_build_load_projects_on_demand = false,
enable_roslyn_analyzers = false,
organize_imports_on_format = false,
enable_import_completion = false,
sdk_include_prereleases = true,
analyze_open_documents_only = false,
handlers = {
["textDocument/definition"] = require('omnisharp_extended').handler,
}
}
local null_ls = require('null-ls')
null_ls.setup({
sources = {
null_ls.builtins.formatting.black,
}
})
end })
-- 2. build-in LSP function
-- keyboard shortcut
vim.keymap.set('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>')
vim.keymap.set('n', 'gf', '<cmd>lua vim.lsp.buf.formatting()<CR>')
vim.keymap.set('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>')
vim.keymap.set('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>')
vim.keymap.set('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>')
vim.keymap.set('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>')
vim.keymap.set('n', 'gt', '<cmd>lua vim.lsp.buf.type_definition()<CR>')
vim.keymap.set('n', 'gn', '<cmd>lua vim.lsp.buf.rename()<CR>')
vim.keymap.set('n', 'ga', '<cmd>lua vim.lsp.buf.code_action()<CR>')
vim.keymap.set('n', 'ge', '<cmd>lua vim.diagnostic.open_float()<CR>')
vim.keymap.set('n', 'g]', '<cmd>lua vim.diagnostic.goto_next()<CR>')
vim.keymap.set('n', 'g[', '<cmd>lua vim.diagnostic.goto_prev()<CR>')
-- LSP handlers
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
vim.lsp.diagnostic.on_publish_diagnostics, { virtual_text = false }
)
-- Reference highlight
vim.cmd [[
set updatetime=500
highlight LspReferenceText cterm=underline ctermfg=1 ctermbg=8 gui=underline guifg=#A00000 guibg=#104040
highlight LspReferenceRead cterm=underline ctermfg=1 ctermbg=8 gui=underline guifg=#A00000 guibg=#104040
highlight LspReferenceWrite cterm=underline ctermfg=1 ctermbg=8 gui=underline guifg=#A00000 guibg=#104040
augroup lsp_document_highlight
autocmd!
autocmd CursorHold,CursorHoldI * lua vim.lsp.buf.document_highlight()
autocmd CursorMoved,CursorMovedI * lua vim.lsp.buf.clear_references()
augroup END
]]
-- 3. completion (hrsh7th/nvim-cmp)
local cmp = require("cmp")
cmp.setup({
snippet = {
expand = function(args)
vim.fn["vsnip#anonymous"](args.body)
end,
},
sources = {
{ name = "nvim_lsp" },
{ name = "buffer" },
{ name = "path" },
},
mapping = cmp.mapping.preset.insert({
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
['<C-l>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm { select = true },
}),
experimental = {
ghost_text = true,
},
})
cmp.setup.cmdline('/', {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = 'buffer' }
}
})
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "path" },
{ name = "cmdline" },
},
})
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment