前言
一个好的IDE之于一个程序员,正如一个趁手的兵器之于一个战士。 至于说,什么IDE是最好的IDE,我相信这比“鸡蛋应该从哪头开始打开”这个问题更难,为了不因此引发战争,我们还是暂时先搁置这样的问题吧。 VIM是一款小巧的编辑神器,其迅捷如飞地效率和敏如脱兔地丝滑早已深入人心,如果在开发Go时,能够使用VIM作为IDE,想必也是极好的。
安装和配置
安装iTerm2
iTerm2是一款Mac下的终端模拟器,相比于系统自带的终端,iTerm2有着更多的功能和更好的体验。 移步iTerm2官网下载最新的iTerm2安装包进行安装。
安装VIM
移步官网下载最新的VIM安装包进行安装。
安装VIM插件管理器
VIM插件管理器有很多,比如VIM Plugin、Vundle、Pathogen、NeoBundle等,这里我们选择VIM Plugin。
安装并配置插件
- 增加插件
打开~/.vimrc
文件,增加以下内容:
" Vim-Go: Go development plugin
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
" NerdTree: File system explorer
Plug 'preservim/nerdtree'
" CtrlP: Fuzzy file finder
Plug 'ctrlpvim/ctrlp.vim'
" Airline: Status/tabline
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" solarized color
Plug 'altercation/vim-colors-solarized'
" solarized8 color
Plug 'lifepillar/vim-solarized8'
" Tagbar: Display tags in a window
Plug 'preservim/tagbar'
" ALE: Asynchronous Lint Engine
Plug 'dense-analysis/ale'
" Autocomplete
Plug 'neoclide/coc.nvim', {'branch': 'release'}
- 安装插件
在VIM中执行:PlugInstall
命令,安装插件。
- 配置vim-go
打开~/.vimrc
文件,增加以下内容:
let g:go_fmt_command = "goimports"
let g:go_autodetect_gopath = 1
let g:go_list_type = "quickfix"
let g:go_highlight_types = 1
let g:go_highlight_fields = 1
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
- 配置CoC补全工具
打开~/.vimrc
文件,增加以下内容:
" Use <Tab> and <S-Tab> to navigate through popup menu
inoremap <silent><expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <silent><expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
" Use K to show documentation in preview window
nnoremap <silent> K :call <SID>show_documentation()<CR>
function! s:show_documentation()
if (index(['vim', 'help'], &filetype) >= 0)
execute 'h '.expand('<cword>')
elseif (coc#rpc#ready())
call CocActionAsync('doHover')
else
execute '!' . &keywordprg . " " . expand('<cword>')
endif
endfunction
- 配置ALE
打开~/.vimrc
文件,增加以下内容:
let g:ale_linters = {
\ 'go': ['gopls'],
\}
let g:ale_fixers = {
\ 'go': ['gofmt', 'goimports'],
\}
let g:ale_go_gopls_options = '-remote=auto'
let g:ale_go_gopls_executable = 'gopls'
- 配置语法高亮及主题配色
打开~/.vimrc
文件,增加以下内容:
syntax on
set spell
set spelllang=en_us,cjk
set number " Show line numbers
set relativenumber " Show relative line numbers
set tabstop=4 " Number of spaces tabs count for
set shiftwidth=4 " Number of spaces to use for autoindent
set expandtab " Use spaces instead of tabs
set autoindent " Copy indent from current line when starting a new line
set smartindent " Auto indent new lines
set background=dark
colorscheme solarized8
" enable 256 color
if (has("termguicolors"))
set termguicolors
endif
" add additional highlight for go
highlight Comment ctermfg=LightBlue
highlight Identifier ctermfg=Cyan
highlight Function ctermfg=Yellow
highlight Type ctermfg=Green
highlight Constant ctermfg=Magenta
highlight String ctermfg=Red
highlight Statement ctermfg=Blue
highlight PreProc ctermfg=LightMagenta
highlight Special ctermfg=LightGreen
" configure Airline
let g:airline_theme='solarized'
- 配置Airline
打开~/.vimrc
文件,增加以下内容:
let g:airline_theme='solarized'
let g:airline_powerline_fonts = 1
- 配置其他快捷键
打开~/.vimrc
文件,增加以下内容:
" function that controls show or not show number
function! ToggleNumber()
if &number
set nonumber norelativenumber
else
set number relativenumber
endif
endfunction
" controls to use which theme color
function! ToggleColorscheme()
if g:colors_name == "solarized8"
colorscheme solarized
elseif g:colors_name == "solarized"
colorscheme solarized8
else
colorscheme solarized8
endif
endfunction
"set shortcut for cancel number
"map <BS> :set nonumber<CR>
nmap <silent> <F1> :NERDTree<CR>
nnoremap <silent> <F2> :call ToggleNumber()<CR>
nnoremap <silent> <F3> :call ToggleColorscheme()<CR>
nnoremap <silent> <F4> :noh<CR>
nnoremap i :noh<CR>i
效果展示
快捷操作
F1
:打开/关闭文件树F2
:打开/关闭行号F3
:切换颜色主题F4
:去除搜索出的匹配词的背景突出:grep xxxx
: 在当前目录下查找xxxx
字符串:copen
: 打开搜索结果zg
: 将某个拼写检查加入全局词典,从而忽略某个拼写检查
「你的肯定是我不懈前行的动力」
你的肯定是我不懈前行的动力
使用微信扫描二维码完成支付