将VIM打造为Go开发利器
平时一般使用VSCode编程,最近为了更好地刷leetcode,又换回了vim。发现笔记本小屏幕 使用vscode zen-mode沉浸式看代码很爽以后,也喜欢上了使用vim写代码, 快捷键方便、稳 定高效、功能纯粹(极简主义)。研究了一番后,发现其可行性,便整理了一下。
主要插件
完整列表
Plug 'scrooloose/nerdtree'
Plug 'preservim/tagbar'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
Plug 'Shougo/ddc.vim'
Plug 'vim-denops/denops.vim'
Plug 'buoto/gotests-vim'
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
vim-go
vim-go
是目前主要且流行的针对go的vim插件,视频[Hacking with Andrew and Brad: an HTTP/2 client]
(https://www.youtube.com/watch?v=yG-UaBJXZ80)中两位大佬用vim 进行pair编程使用了就是该插件。
PS: 当时看了这视频后,不禁佩服两位大佬的代码功底,也刷新了使用vim开发实际项目的认知, 原来使用vim写代码 还可以比eclipse/idea/vscode更顺手, 也可以装酷了:》 自己用vim一般也只是用来改改配置,写写简单的脚本,还没尝试过使用它进行正经的项目开发。 虽然以前做过尝试,不过借助
vim-go
插件和LSP
,这成为了真正的可能。
虽然vim-go原作者已不再参与维护该项目,但已交给社区的另外两人负责,仍然在活跃更新 https://arslan.io/2018/10/09/taking-an-indefinite-sabbatical-from-my-projects/
govim是一个有意思的vim插件,它尝试使用go语言编写vim插件.
作为一个后起之秀,它的功能并没有vim-go
完善,比如debug功能(这对我来说是一个核心诉求),
从实际使用体验来看,也不如vim-go
稳定。从个人角度而言, vim, go我都喜欢,但使用vim script
编写插件应该有更好的兼容性(vim对go的支持还没有那么的好,对lua和python的支持更佳),
所以还是选择vim-go
插件。
- 配置
".vim/after/ftplugin/go.vim
" shortcut like vscode
nnoremap <buffer> <silent> <F2> :hide GoRename<CR>
nnoremap <buffer> <silent> <F4> :hide GoBuild<CR>
nnoremap <buffer> <silent> <F5> :hide GoDebugStart<CR>
nnoremap <buffer> <silent> <C-F5> :hide GoRun<CR>
nnoremap <buffer> <silent> <S-F11> :hide GoDebugStepOut<CR>
nnoremap <buffer> <silent> <F12> :hide GoDebugStop<CR>
生成测试方法
‘buoto/gotests-vim’
生成测试方法
:GoTests
默认会生成table-driven测试
Snippets
‘honza/vim-snippets’ ‘Shougo/ddc.vim’
浏览
‘scrooloose/nerdtree’ ‘preservim/tagbar’
类似于vscode, ctrl + B打开或关闭文件概览
使用F8打开Tagbar(大纲)
map <C-b> :NERDTreeToggle<CR>
nmap <F8> :TagbarToggle<CR>
安装
- 推荐安装
vim 8.2+
版本 - vim-plug
常用快捷键
浏览
- 返回上次位置 Ctrl + O
- 跳到下一个位置Ctrl + I
https://vim.fandom.com/wiki/Jumping_to_previously_visited_locations