Vim配置
虽然大多数用的Vscode,但是偶尔碰到一些情况需要用终端的vim,所以花了点时间做了简单的配置,这里做一下记录,方便以后使用。大概效果是这样,更多的就不再折腾了。
1. vim-plug插件管理
使用vim-plug进行管理
在linux环境下安装
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
安装插件
编辑.vimrc
文件
Example
call plug#begin()
" Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug 'fatih/vim-go', { 'tag': '*' }
call plug#end()
最后:PlugInstall
就行了
卸载插件
将.vimrc
中的插件行删除
执行:PlugClean
查看插件
执行:PlugStatus
可以查看目前安装了哪些插件
2. 配置C++编辑环境
coc.nvim
使用coc.nvim作为代码补全工具,需要nodejs
这里我们不能直接使用apt-get install nodejs
,这样版本太低
首先执行
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
然后
sudo apt install nodejs
然后加入coc插件
Plug 'neoclide/coc.nvim', {'branch': 'release'}
然后安装,安装完后需要执行:CocInstall coc-clangd
同时我们需要安装clangd
sudo apt-get install clangd
tarbar
加入插件安装
Plug 'majutsushi/tagbar'
需要配合ctags使用
sudo apt-get install ctags
3. 配置Go安装环境
安装go
到 golang.org 将安装包下载,并配置好环境, 推荐使用二进制版本,下载完成后直接解压缩就可以使用。如果无法访问 go 官网,可以考虑去 golang.google.cn 去下载。
sudo tar xzvf go1.xx.linux-amd64.tar.gz -C /usr/local/
配置 PATH 及 GOPATH
创建 Go 的工作空间(目录)
这是默认的位置,也可以按照需求指定到其他目录
mkdir -p $HOME/go/{bin,pkg,src}
配置环境变量
在.zshrc
中加入
export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
然后
source ~/.zshrc
安装vim-go插件
vimrc中加入
" go 主要插件"
Plug 'fatih/vim-go', { 'tag': '*' }
" go 中的代码追踪,输入 gd 就可以自动跳转
Plug 'dgryski/vim-godef'
安装完后输入:GoInstallBinaries
等待Go相关包安装完毕,中间可能出现下载失败的情况
终端输入
go env -w GOPROXY=https://goproxy.cn,direct
同样,代码补全需要
:CocInstall coc-go
4. 插件集合
nerdtree
这里配置了映射
键位 | 功能 |
---|---|
leader+nn | :NERDTreeToggle |
leader+nb | :NERDTreeBookmark |
leader+nf | :NERDTreeFind |
tagbar
键位 | 功能 |
---|---|
F9 | :TagbarToggle |
LeaderF
键位 | 功能 |
---|---|
leader+f | 查找文件 |
leader+b | 查找buffer |
:LeaderfFunction | 查找函数 |
常用快捷键
键位 | 功能 |
---|---|
leader+t | 下方打开终端 |
esc | 在终端中推出到normal模式 |
exit | 退出终端 |
最后完整的vimrc文件
let mapleader = "\<space>"
map <leader>nn :NERDTreeToggle<cr>
map <leader>nb :NERDTreeBookmark
map <leader>nf :NERDTreeFind<cr>
nmap LH 0
nmap LT $
nmap <leader>t :below term<CR>
:tnoremap <Esc> <C-\><C-n>
set termwinsize=5x0
set relativenumber
set laststatus=2
set showmatch
set autoindent
set showcmd
set ai " 自动缩进
set si " 智能缩进
set cindent " C/C++风格缩进
set cursorline
filetype plugin indent on
let g:lightline={
\ 'colorscheme' : 'wombat',
\ }
set tabstop=4 " 设置Tab长度为4空格
set shiftwidth=4 " 设置自动缩进长度为4空格
set autoindent " 继承前一行的缩进方式,适用于多行注释
call plug#begin()
Plug 'preservim/nerdtree'
Plug 'mhinz/vim-startify'
Plug 'itchyny/lightline.vim'
" 可以使 nerdtree 的 tab 更加友好些
Plug 'jistr/vim-nerdtree-tabs'
" 可以在导航目录中看到 git 版本信息
Plug 'Xuyuanp/nerdtree-git-plugin'
" 查看当前代码文件中的变量和函数列表的插件,
" 可以切换和跳转到代码中对应的变量和函数的位置
" 大纲式导航, Go 需要 https://github.com/jstemmer/gotags 支持
Plug 'majutsushi/tagbar'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" 自动补全括号的插件,包括小括号,中括号,以及花括号
Plug 'jiangmiao/auto-pairs'
" 代码自动完成,安装完插件还需要额外配置才可以使用
" Plug 'Valloric/YouCompleteMe'
" 可以在文档中显示 git 信息
Plug 'airblade/vim-gitgutter'
" 下面两个插件要配合使用,可以自动生成代码块
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
" 可以在 vim 中使用 tab 补全
"Plug 'vim-scripts/SuperTab'
" 可以在 vim 中自动完成
"Plug 'Shougo/neocomplete.vim'
" 配色方案
" colorscheme neodark
Plug 'KeitaNakamura/neodark.vim'
" colorscheme monokai
Plug 'crusoexia/vim-monokai'
" colorscheme github
Plug 'acarapetis/vim-colors-github'
" colorscheme one
Plug 'rakr/vim-one'
" go 主要插件
Plug 'fatih/vim-go', { 'tag': '*' }
" go 中的代码追踪,输入 gd 就可以自动跳转
Plug 'dgryski/vim-godef'
Plug 'Yggdroot/LeaderF', { 'do': ':LeaderfInstallCExtension' }
Plug 'scrooloose/nerdcommenter'
call plug#end()
set termguicolors
colorscheme one
set background=dark
let g:NERDSpaceDelims=1 " 注释后加空格
"==============================================================================
" majutsushi/tagbar 插件
"==============================================================================
" majutsushi/tagbar 插件打开关闭快捷键
nmap <F9> :TagbarToggle<CR>
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
let g:UltiSnipsExpandTrigger = "<tab>"
let g:UltiSnipsJumpForwardTrigger = "<tab>"
let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"
Comments | 2 条评论