neovim 配置
前言
最近纠正完自己的指法后重新捡起了 vim
考虑到自己的需求和刷题的要求,在 idea 和 goland 中均配置了 .ideavimrc
选择 neovim 配置 go 的开发环境
个人向配置,因此略过相关依赖的安装教程,大量参考其他配置
安装
检查
nvim 中输入:checkhealth
检查依赖完成度
插件管理器
vim-plug
注意安装的位置
call plug#begin()
call plug#end()
- 安装插件:
:PlugInstall
- 更新插件:
:PlugUpdate
- 删除插件:
:PlugClean
(首先在init.vim
中,注释掉该插件,然后打开 Nvim, 使用:PlugClean
命令清除该插件) - 查看插件状态:
:PlugStatus
- 升级 vim-plug:
:PlugUpgrade
插件
vim-airline
底部状态栏
底部状态栏的主题美化需要配合vim-arilene-themes
插件
状态栏主题:let g:airline_theme='themeName'
nerdtree
文件管理器
"==============================================================================
" 项目管理 nerdtree 设置
nnoremap <leader>v :NERDTreeFind<cr>
highlight NERDTreeFile ctermfg=14
nnoremap <leader>g :NERDTreeToggle<cr>
leader+v/g
找到当前文件所在的目录和打开侧边栏目录
gi/gs
目录树中以分割视图打开文件
coc.nvim
代码补全插件
默认路径在~/.config/nvim/coc-settings.json
配置文件添加 golang 相关配置
{
"languageserver": {
"golang": {
"command": "gopls",
"rootPatterns": [
"go.mod"
],
"filetypes": [
"go"
]
}
},
"suggest.noselect": false,
"coc.preferences.diagnostic.displayByAle": true,
"suggest.floatEnable": true
}
使用ctr+n/p
上下移动 回车选择补全代码
在init.vim
可选配置
"==============================================================================
" coc.nvim 配置
" Remap keys for gotos
" nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gm <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
nnoremap <silent> K :call <SID>show_documentation()<CR>
function! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0)
execute 'h '.expand('<cword>')
else
call CocAction('doHover')
endif
endfunction
"==============================================================================
ale 代码错误插件
在 coc-settings.json
中关闭 coc的错误处理 "coc.preferences.diagnostic.displayByAle": true
在init.vim
配置
"==============================================================================
" ale 错误处理配置
let g:ale_set_highlights = 1
let g:ale_set_quickfix = 1
"自定义error和warning图标
let g:ale_sign_error = '✗'
let g:ale_sign_warning = '⚡'
"在vim自带的状态栏中整合ale
let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK']
"显示Linter名称,出错或警告等相关信息
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
"打开文件时不进行检查
let g:ale_lint_on_enter = 1
"普通模式下,sp前往上一个错误或警告,sn前往下一个错误或警告
nmap sp <Plug>(ale_previous_wrap)
nmap sn <Plug>(ale_next_wrap)
"<Leader>d查看错误或警告的详细信息
nmap <Leader>d :ALEDetail<CR>
let g:ale_linters = {
\ 'go': ['golint', 'go vet', 'go fmt'],
\ }
"==============================================================================
使用sn/sp
在错误之间跳转
查找 fzf
与本地内 fzf 联动
Plug '/usr/local/opt/fzf'
Plug 'junegunn/fzf.vim'
在init.vim
配置
map <leader>f :Files<CR>
map <leader>b :Buffers<CR>
let g:fzf_action = { 'ctrl-e': 'edit' }
" 用 leader+ag 搜索当前 cursor 下单词
nnoremap <silent> <Leader>ag :Ag <C-R><C-W><CR>
直接leader+ag
搜索当前光标下的单词
leader+f
搜索项目内文件
leader+b
搜索 buffer 列表切换 ctrl+n/p
选择
全局项目搜索::Ag
在项目中查找
others
插件 | 作用 | 快捷键 |
---|---|---|
vim-commentary |
注释插件 | gcc/gc 注释当前行/所选代码块 |
vim-easymotion |
快速移动光标 | ss nmap 下 ss+目标单词的 2 个字母两次 跳转到显示区域内的首目标单词 |
vim-surround |
CRUD{[(“‘ | di/da/ci/ca/yi/ya+* |
vim-auto-pairs |
成对括号 | |
vim-ultisnips+vim-snippets |
代码块生成 | forr+tab 即可for range |
tagbar |
ctag | leader+t 显示 tag |
总结
不建议直接 copy 巨佬们的配置
尽量了解每个插件的作用和快捷键,避免插件之间的快捷键冲突,在使用中记忆快捷键。
将 IDE 于vim
配合使用,项目开发还是 Goland 香。