Created
May 8, 2023 14:48
-
-
Save kuchida1981/0e85f86477a8e98d86130ab4514c8ade to your computer and use it in GitHub Desktop.
neovim 設定
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" 基本設定 | |
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