vim配置 go C++

dockvim基本设置和部分通用插件安装


1、复制 .vimrc 文件到个人根目录下

2、创建文件夹 ~/.vim/bundle/

3、安装插件管理工具 vundle

  git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

4、vim进入 .vimrc里执行 :PluginInstall


vim颜色设置


1、创建文件夹 ~/vim-plug-ins/, 用以存放配置过程中下载的各种临时文件

2、为linux终端配置颜色--solarized 主题色

  1. git clone git://github.com/seebi/dircolors-solarized.git (对ls后的目录增加颜色)

  2. cp ~/vim-plug-ins/dircolors-solarized/dircolors.256dark ~/.dircolors

  3. 注意有的终端需要设置支持256颜色 还需要在.vimrc中加一句 set t_Co=256 并在.bashrc中添加 export TERM=xterm-256color

3、为vim配置颜色--Molokai 主题色

  1. git clone https://github.com/tomasr/molokai.git (下载Molokai主题颜色)

  2. 创建文件夹 mkdir ~/.vim/colors

  3. 将molokai.vim复制到 ~/.vim/color目录下,cp ~/vim-plug-ins/molokai/colors/molokai.vim ~/.vim/colors/


安装配置go编译环境


1、创建go工具包源码路径 mkdir ~/go-src

2、创建go的安装路径 mkdir ~/go1.6.linux-amd64 (我是以版本号命令的)

3、解压go的压缩包到~/go1.6.linux-amd64路径下, 命令:tar -zxvf go1.6.linux-amd64.tar.gz

4、设置环境变量,GOBIN,GOPATH,GOROOT

在~/.bashrc文件中添加一下三行命令,设置环境变量

  1. export GOBIN=$HOME/go1.6.linux-amd64/go/bin

  2. export GOPATH=HOME/go_src:HOME/code/wangyang/jmongo-server/build/rely:HOME/code/wangyang/mongodb/mongodb-src-r3.2.9/src/mongo-tools

  3. export GOROOT=$HOME/go1.8.7.linux-amd64/go

  4. 在~/.bash_profile文件中添加一下三行命令export PATH=GOPATH:$HOME/go1.8.7.linux-amd64/go/bin

5、在~/test路径下创建一个go test程序(hellogolang.go),验证环境是否配置成功。


初始化go辅助工具


1、go插件初始化,vim打开一个go文件,运行命令 :GoInstallBinaries 用来安装go-tools等相关工具,运行结束后,会在$GOBIN目录中生成如下可执行程序

[图片上传失败...(image-d4848a-1564453731341)]

2、如果运行过程中出现异常,或者没有生成上述可执行程序时,可以手动进行补充。

  1. 首先在$GOPATH/src路径下建立/golang.org/x 文件夹,然后到这个文件夹下执行:git clone https://github.com/golang/tools

  2. 下载完成之后执行:go install golang.org/x/tools/cmd/guru (guru工具可以实现go语言函数跳转功能)

  3. 如果第一步go插件初始化没有成功,可以在此时在执行一遍第一步,检查是否成功。


初始化C++相关设置


1、确认是否已经安装ctags插件,若没有安装ctags,则执行yum install ctags安装

2、在C++源码工程根目录运行命令: ctags -R --c++-kinds=+p --fields=+iaS --extra=+q 生成tags

参考文献:

1、vim终端配色(非gui版本)——Monokai https://www.cnblogs.com/liubaocheng999/p/3274645.html

2、Golang开发环境搭建-Vim篇 http://tonybai.com/2014/11/07/golang-development-environment-for-vim/

3、vim颜色表 http://blog.csdn.net/cp3alai/article/details/45509459

4、golang vim 插件设置 https://my.oschina.net/u/1765027/blog/811056?hmsr=studygolang.com&utm_medium=studygolang.com&utm_source=studygolang.com

5、vim之tags详解 https://www.linuxidc.com/Linux/2017-01/139378.htm

6、vim中ctags简单实用教程 https://blog.csdn.net/haifeng_gu/article/details/72934188?utm_source=itdadao&utm_medium=referral

7、vim中使用grep功能 https://blog.csdn.net/sunxiaopengsun/article/details/62046415

vimrc文件

############################################################################

[图片上传失败...(image-5a3509-1564453731340)]

.vim 详细内容:

set nocompatible " be iMproved, required

"set tags=/home/wangyang/work/tags

filetype off " required

let g:go_version_warning = 0

" set the runtime path to include Vundle and initialize

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

" alternatively, pass a path where Vundle should install plugins

"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required

Plugin 'gmarik/Vundle.vim'

" Install Vim-go

Plugin 'fatih/vim-go'

Plugin 'Blackrush/vim-gocode'

Plugin 'Shougo/neocomplcache' "自动补全

Plugin 'scrooloose/nerdcommenter' "快速注释

Plugin 'scrooloose/nerdtree' "树形目录

Plugin 'FromtonRouge/OmniCppComplete' "CC++代码补全

Plugin 'Lokaltog/vim-powerline' "底部状态栏

Plugin 'msanders/snipmate.vim' "tab补全

Plugin 'wesleyche/SrcExpl' "显示跳转函数和变量定义

Plugin 'scrooloose/syntastic' "语法检测

"Plugin 'Valloric/YouCompleteMe'

Plugin 'dgryski/vim-godef'

Plugin 'majutsushi/tagbar'

Plugin 'jiangmiao/auto-pairs' "括号引号匹配

" Install Vim-C++

"Plugin 'Lokaltog/vim-powerline' "status 美化

Plugin 'octol/vim-cpp-enhanced-highlight' "对c++语法高亮增强

Plugin 'kshenoy/vim-signature' "书签可视化的插件

Plugin 'vim-scripts/BOOKMARKS--Mark-and-Highlight-Full-Lines' "书签行高亮

"Plugin 'majutsushi/tagbar' "taglist的增强版,查看标签,依赖于ctags

"Plugin 'Valloric/YouCompleteMe' "自动补全

Plugin 'kien/ctrlp.vim' "搜索历史打开文件,在命令行模式下按ctrl+p触发

Plugin 'vim-scripts/grep.vim' "在命令行模式使用grep命令,:Grep

Plugin 'Lokaltog/vim-easymotion' "快速跳转,按两下leader键和f组合

"Plugin 'vim-scripts/ShowTrailingWhitespace.git' "高亮显示行尾的多余空白字符

Plugin 'vim-scripts/indentpython.vim.git'

"Plugin 'vim-scripts/Solarized.git' "主题方案

Plugin 'nathanaelkane/vim-indent-guides.git' "缩进对齐显示

"Plugin 'vim-scripts/indexer.tar.gz' "自动生成标签

""Plugin 'vim-scripts/DfrankUtil' "indexer 依赖

"Plugin 'vim-scripts/vimprj' "indexer 依赖

"Plugin 'davidhalter/jedi-vim' "python

"补全,不依赖于tags,但比较慢,可以使用indexer替换,但不能跳转项目外

"Plugin 'vim-scripts/Markdown'

"Plugin 'tpope/vim-surround'

"Plugin 'ekalinin/Dockerfile.vim'

"Plugin 'scrooloose/syntastic'

" End install vim-C++

" All of your Plugins must be added before the following line

call vundle#end() " required

filetype plugin on " required

let g:neocomplcache_enable_at_startup = 1 "neocomplecache 配置

filetype plugin indent on "启用缩进

set smartindent "智能对齐

set encoding=utf-8

set noundofile

set nobackup

set noswapfile

set cscopequickfix=s-,c-,d-,i-,t-,e-

"设置字体和大小

set guifont=Courier_new:h12:b:cDEFAULT

nmap s :cs find s =expand("")

nmap g :cs find g =expand("")

nmap c :cs find c =expand("")

nmap t :cs find t =expand("")

nmap e :cs find e =expand("")

nmap f :cs find f =expand("")

nmap i :cs find i ^=expand("")$

nmap d :cs find d =expand("")

let g:miniBufExplMapCTabSwitchBufs = 1

let g:miniBufExplMapWindowNavVim = 1

let g:miniBufExplMapWindowNavArrows = 1

nnoremap   :A

nnoremap   :Grep

let g:SuperTabRetainCompletionType=2

let g:SuperTabDefaultCompletionType=""

"" 自动语法高亮

syntax on

" 检测文件类型

filetype on

" " 检测文件类型插件

filetype plugin on

" " 不设定在插入状态无法用退格键和 Delete 键删除回车符

" set backspace=indent,eol,start

" set whichwrap+=<,>,h,l

" " 显示行号

set number

" " 上下可视行数

set scrolloff=6

"" replace tab with space

set expandtab

" " 设定 tab 长度为 4

set tabstop=4

" " 设置按BackSpace的时候可以一次删除掉4个空格

set softtabstop=4

" " 设定 << 和 >> 命令移动时的宽度为 4

set shiftwidth=4

set smarttab

set history=1024

" " 不突出显示当前行

set nocursorline

" " 覆盖文件时不备份

set nobackup

" " 自动切换当前目录为当前文件所在的目录

set autochdir

" " 自动查找tags

set tags=tags;

" " 搜索时忽略大小写,但在有一个或以上大写字母时仍大小写敏感

set ignorecase

set smartcase

" " 搜索到文件两端时不重新搜索

set nowrapscan

" " 实时搜索

set incsearch

" " 搜索时高亮显示被找到的文本

set hlsearch

" " 关闭错误声音

set noerrorbells

set novisualbell

" "set t_vb=

"

" " 不自动换行

" "set nowrap

" "How many tenths of a second to blink

set mat=2

" " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存

set hidden

" " 智能自动缩进

set smartindent

" " 设定命令行的行数为 1

set cmdheight=1

" " 显示状态栏 (默认值为 1, 无法显示状态栏)

set laststatus=2

" "显示括号配对情况

set showmatch

"

" " 解决自动换行格式下, 如高度在折行之后超过窗口高度结果这一行看不到的问题

set display=lastline

" " 设定配色方案

set background=dark

"colorscheme solarized

colorscheme molokai

set t_Co=256

" " 设置在状态行显示的信息

set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\[%{(&fenc==\"\"?&enc:&fenc).(&bomb?\",BOM\":\"\")}]\ %c:%l/%L%)

" hilight function name

autocmd BufNewFile,BufRead * :syntax match cfunctions "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2")"

autocmd BufNewFile,BufRead * :syntax match cfunctions "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1")"

"上面两行为了匹配函数名的,为下面的给函数名定义颜色做准备

"给函数名加颜色

hi cfunctions ctermfg=215

"设置光标行,光标移到哪一行,哪一行的行号就变成了浅黄色,相当的动感

set cursorline

"设置自动折叠方式

"set fdm=indent

" 显示Tab符

"set list

"set listchars=tab:\|\ ,trail:.,extends:>,precedes:<

" "启动时不显示 捐赠提示

set shortmess=atl

"blank 空白

"buffers 缓冲区

"curdir 当前目录

"folds 折叠

"help 帮助

"options 选项

"tabpages 选项卡

"winsize 窗口大小

"slash 转换文件路径中的\为/以使session文件兼容unix

"unix 设置session文件中的换行模式为unix

set sessionoptions=blank,buffers,curdir,folds,help,options,tabpages,winsize,slash,unix,resize

"

" 允许backspace和光标键跨越行边界

set whichwrap+=<,>,h,l

" backspace

set backspace=eol,start,indent

"可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)

set mouse=a

set selection=exclusive

set selectmode=mouse,key

" 在被分割的窗口间显示空白,便于阅读

set fillchars=vert:\ ,stl:\ ,stlnc:\

" 高亮显示匹配的括号

set showmatch

" 匹配括号高亮的时间(单位是十分之一秒)

set matchtime=5

"编码设置

set enc=utf-8

set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936

"配置tagbar

map  :TagbarToggle

let g:tagbar_autofocus = 1

"gotags配置

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'

\ }

"NERDTREE 配置

let mapleader = ','

nnoremap  gt

nnoremap  gT

nnoremap t : tabe

map  :NERDTreeMirror "F3开启关闭NERDTree

map  :NERDTreeToggle

你可能感兴趣的:(vim配置 go C++)