vim配置go

set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=utf-8
set gfn=Consolas:h12            "字体,大小
"=============================================================================
" vim 内置配置
"==============================================================================
" 设置 vimrc 修改保存后立刻生效,不用在重新打开
" 配置完成后将这个关闭
autocmd BufWritePost $MYVIMRC source $MYVIMRC
filetype off
" 关闭兼容模式
set nocompatible
set showcmd            "显示命令行
set backspace=indent,eol,start
set clipboard+=unnamed 
set nu " 设置行号
set cursorline "突出显示当前行
" set cursorcolumn " 突出显示当前列
set showmatch " 显示括号匹配
set backspace=2
" tab 缩进
set tabstop=4 " 设置Tab长度为4空格
set shiftwidth=4 " 设置自动缩进长度为4空格
set noswapfile            "不生成swap文件
set autoindent " 继承前一行的缩进方式,适用于多行注释
set ruler            "打开状态栏标尺
set laststatus=2            "总是显示状态行
set showtabline=2            "标签栏的显示,0永远不显示 1两个以上显示 2 永远显示
set statusline=%F%m%r%h%w\[POS=%l,%v][%p%%]\%{strftime(\"%d/%m/%y\ -\ %H:%M\")}   "我的状态行显示的内容(包括文件类型和解码)  
set hlsearch            "搜索时高亮显示被找到的文本
set foldmethod=syntax            "代码折叠
set fdm=indent            "代码折叠
set foldlevel=100            "启动vim时不要自动折叠代码
nnoremap <space> zo            "代码折叠快捷键
let autosave=15            "15s,自动保存文件" 定义快捷键的前缀,即<Leader>
let mapleader=","

nnoremap <silent> <Leader>w  :WMToggle <CR>

" ==== 系统剪切板复制粘贴 ====
" v 模式下复制内容到系统剪切板
vmap <Leader>c "+yy
" n 模式下复制一行到系统剪切板
nmap <Leader>c "+yy
" n 模式下粘贴系统剪切板的内容
nmap <Leader>v "+p

imap <F9> <C-x><C-o>

" 开启实时搜索
set incsearch
" 搜索时大小写不敏感
set ignorecase
syntax enable

:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
   if getline('.')[col('.') - 1] == a:char
        return "\<Right>"
    else
        return a:char
    endif
endfunction
" 退出插入模式指定类型的文件自动保存
au InsertLeave *.go,*.sh,*.php write

"==============================================================================
" Plugin
"==============================================================================


" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
" Install Vim-go  
Plugin 'fatih/vim-go'
Plugin 'tpope/vim-fugitive'
Plugin 'scrooloose/nerdtree'
Plugin 'majutsushi/tagbar'
Plugin 'Valloric/YouCompleteMe'
" 代码自动完成,安装完插件还需要额外配置才可以使用
"Plugin 'ycm-core/YouCompleteMe'
call vundle#end()            " required
"==============================================================================
" 主题配色
"==============================================================================

" 开启24bit的颜色,开启这个颜色会更漂亮一些
" set termguicolors
" 配色方案, 可以从上面插件安装中的选择一个使用
"colorscheme one " 主题
"set background=dark " 主题背景 dark-深色; light-浅色

filetype plugin indent on

syntax on                    " 开启文件类型侦测

"==============================================================================
" vim-go 插件
"==============================================================================
let g:go_fmt_command = "goimports" " 格式化将默认的 gofmt 替换
let g:go_debug=['shell-commands']
let g:go_metalinter_command = "golangci-lint" "语法校验
let g:go_autodetect_gopath = 1
let g:go_list_type = "quickfix"

let g:go_version_warning = 1
let g:go_highlight_types = 1
let g:go_highlight_fields = 1
let g:go_highlight_functions = 1
let g:go_highlight_function_calls = 1
let g:go_highlight_operators = 1
let g:go_highlight_extra_types = 1
let g:go_highlight_methods = 1
let g:go_highlight_generate_tags = 1

let g:godef_split=2

" vim-go custom mappings
"au FileType go nmap <Leader>s <Plug>(go-implements)
"au FileType go nmap <Leader>i <Plug>(go-info)
"au FileType go nmap <Leader>gd <Plug>(go-doc)
"au FileType go nmap <Leader>gv <Plug>(go-doc-vertical)
"au FileType go nmap <leader>r <Plug>(go-run)
"au FileType go nmap <leader>b <Plug>(go-build)
"au FileType go nmap <leader>t <Plug>(go-test)
"au FileType go nmap <leader>c <Plug>(go-coverage)
"au FileType go nmap <Leader>ds <Plug>(go-def-split)
"au FileType go nmap <Leader>dv <Plug>(go-def-vertical)
"au FileType go nmap <Leader>dt <Plug>(go-def-tab)
"au FileType go nmap <Leader>e <Plug>(go-rename)

"==============================================================================
" auto-pairs 插件
"==============================================================================
"let g:AutoPairsFlyMode = 0
"let g:AutoPairsShortcutBackInsert = '<M-b>'

"==============================================================================
" NERDTree 插件
"==============================================================================

" 打开和关闭NERDTree快捷键
map <F3> :NERDTreeToggle<CR>
nnoremap <silent> <Leader>n  :NERDTreeToggle <CR>
" 显示行号
"let NERDTreeShowLineNumbers=1
" 打开文件时是否显示目录
let NERDTreeAutoCenter=0
" 是否显示隐藏文件
let NERDTreeShowHidden=0
" 设置宽度
let NERDTreeWinSize=25
" 忽略一下文件的显示
let NERDTreeIgnore=['\.pyc','\~$','\.swp']
" 打开 vim 文件及显示书签列表
let NERDTreeShowBookmarks=2

" 在终端启动vim时,共享NERDTree
let g:nerdtree_tabs_open_on_console_startup=1

"==============================================================================
"  majutsushi/tagbar 插件
"==============================================================================

" majutsushi/tagbar 插件打开关闭快捷键
nmap <F12> :TagbarToggle<CR>
"nnoremap <silent> <Leader>t  :TagbarToggle <CR>

"nmap <F12>tb :TagbarToggle<CR>
let g:tagbar_ctags_bin='/usr/bin/ctags'
let g:tagbar_width=30
"autocmd BufReadPost *.go,*.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()

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-git-Plugin 插件
"==============================================================================
let g:NERDTreeGitStatusIndicatorMapCustom = {
    \ "Modified"  : "✹",
    \ "Staged"    : "✚",
    \ "Untracked" : "✭",
    \ "Renamed"   : "➜",
    \ "Unmerged"  : "═",
    \ "Deleted"   : "✖",
    \ "Dirty"     : "✗",
    \ "Clean"     : "✔︎",
    \ 'Ignored'   : '☒',
    \ "Unknown"   : "?"
    \ }

let g:NERDTreeGitStatusShowIgnored = 1

"==============================================================================
"  Valloric/YouCompleteMe 插件
"==============================================================================
let g:ycm_server_python_interpreter='/usr/bin/python3.6'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'

"是否开启语义补全"
let g:ycm_seed_identifiers_with_syntax=1
"是否在注释中也开启补全"
let g:ycm_complete_in_comments=1
let g:ycm_collect_identifiers_from_comments_and_strings = 0
"开始补全的字符数"
let g:ycm_min_num_of_chars_for_completion=2
"补全后自动关机预览窗口"
let g:ycm_autoclose_preview_window_after_completion=1
" 禁止缓存匹配项,每次都重新生成匹配项"
let g:ycm_cache_omnifunc=0
"字符串中也开启补全"
let g:ycm_complete_in_strings = 1
let g:ycm_show_diagnostics_ui = 0                  "关闭语法提示
let g:ycm_complete_in_comments=1                   " 补全功能在注释中同样有效
let g:ycm_confirm_extra_conf=0                     " 允许 vim 加载 .ycm_extra_conf.py 文件,不再提示
let g:ycm_collect_identifiers_from_tags_files=1    " 开启 YCM 标签补全引擎
let g:ycm_min_num_of_chars_for_completion=1        " 从第一个键入字符就开始罗列匹配项
let g:ycm_cache_omnifunc=0                         " 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_seed_identifiers_with_syntax=1           " 语法关键字补全
let g:ycm_goto_buffer_command = 'horizontal-split' " 跳转打开上下分屏
"离开插入模式后自动关闭预览窗口"\
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
"回车即选中当前项"
"inoremap <expr> <CR>       pumvisible() ? '<C-y>' : '\<CR>'

" better key bindings for UltiSnipsExpandTrigger
"let g:UltiSnipsExpandTrigger = "<tab>"
"let g:UltiSnipsJumpForwardTrigger = "<tab>"
"let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"

"==============================================================================
"  easymotion/vim-easymotion
"==============================================================================
"let g:EasyMotion_do_mapping = 0 " Disable default mappings"
" --暂时停用下面一行 @kevin 2019-7-18
"let g:EasyMotion_leader_key = '<Space>'
" Bi-directional find motion
" Jump to anywhere you want with minimal keystrokes, with just one key binding.
" `s{char}{label}`
" --暂时停用下面一行 @kevin 2019-7-18
"map s <Plug>(easymotion-s)
" or
" `s{char}{char}{label}`
" Need one more keystroke, but on average, it may be more comfortable.
""nmap s <Plug>(easymotion-s2)
""map t <Plug>(easymotion-t2)

" Turn on case insensitive feature
"let g:EasyMotion_smartcase = 0

" JK motions: Line motions
"map <Leader>j <Plug>(easymotion-j)
"map <Leader>k <Plug>(easymotion-k)
" search
"map // <Plug>(easymotion-sn)
"omap // <Plug>(easymotion-tn)

"==============================================================================
"  ctrlp插件
"==============================================================================
map <F2> :CtrlPMixed <CR>
let g:ctrlp_by_filename = 0
let g:ctrlp_regexp=1
let g:ctrlp_working_path_mode = 'rw'
let g:ctrlp_working_path_mode="ra"
let g:ctrlp_lazy_update=1
let g:ctrlp_use_caching=1
let g:ctrlp_cache_dir=$HOME.'/.vim/.cache/ctrlp'
let g:ctrlp_clear_cache_on_exit=1
let g:ctrlp_max_depth=20
let g:ctrlp_max_height=15
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*
let g:ctrlp_custom_ignore={
    \ 'dir':  '\v[\/]\.(git|hg|svn)$',
    \ 'file': '\v\.(exe|so|dll|a|o|tar|tar.gz|pyc|zip)$',
    \ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
    \ }

"==============================================================================
"  多标签支持(minibuf)
"==============================================================================
let g:miniBufExplMapWindowNavVim=1
let g:miniBufExplMapWindowNavArrows=1
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplModSelTarget=1
let g:miniBufExplorerMoreThanOne=0
hi MBEVisibleActive guifg=#A6DB29 guibg=fg
hi MBEVisibleChangedActive guifg=#F1266F guibg=fg
hi MBEVisibleChanged guifg=#F1266F guibg=fg
hi MBEVisibleNormal guifg=#5DC2D6 guibg=fg
hi MBEChanged guifg=#CD5907 guibg=fg
hi MBENormal guifg=#808080 guibg=fg

"==============================================================================
"  其他插件配置
"==============================================================================

" markdwon 的快捷键
map <silent> <F5> <Plug>MarkdownPreview
map <silent> <F6> <Plug>StopMarkdownPreview

" tab 标签页切换快捷键
:nn <Leader>1 1gt
:nn <Leader>2 2gt
:nn <Leader>3 3gt
:nn <Leader>4 4gt
:nn <Leader>5 5gt
:nn <Leader>6 6gt
:nn <Leader>7 7gt
:nn <Leader>8 8gt
:nn <Leader>9 8gt
:nn <Leader>0 :tablast<CR>

set t_Co=256
colorscheme molokai
"colorscheme one
set background=dark " 主题背景 dark-深色; light-浅色

molokai安装:.vim文件夹下新建colors文件夹,新建文件molokai.vim

gcc-8.5:CentOS 編譯安裝 gcc/c++ 8.5

CMake导入第三方库 及 新Centos7环境配置 2022.7.1记_凉巷少年与狸猫的博客-CSDN博客

复制以下配置:

https://github.com/tomasr/molokai/blob/master/colors/molokai.vim

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于Vundle插件管理器的完整vim插件配置样例,包含常用插件和快捷键绑定等: ``` set nocompatible " be iMproved, required filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim' " Add your plugins here Plugin 'scrooloose/nerdtree' " 文件树 Plugin 'tpope/vim-fugitive' " Git Plugin 'jiangmiao/auto-pairs' " 自动补全括号 Plugin 'vim-airline/vim-airline' " 状态栏 Plugin 'vim-airline/vim-airline-themes' " 状态栏主题 Plugin 'tpope/vim-surround' " 快捷键快速包围文本 Plugin 'tpope/vim-repeat' " 使 . 命令支持插件操作 Plugin 'tpope/vim-commentary' " 快速注释 Plugin 'preservim/nerdcommenter' " 快速注释 Plugin 'vim-scripts/indentpython.vim' " Python缩进 Plugin 'SirVer/ultisnips' " 代码片段 Plugin 'honza/vim-snippets' " 代码片段 Plugin 'fatih/vim-go' " Golang 工具 " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " 定义快捷键 nnoremap <C-n> :NERDTreeToggle<CR> " 打开/关闭文件树 nnoremap <leader>gs :Git<CR> " 打开 Git 窗口 nnoremap <leader>gb :Git blame<CR> " Git blame nnoremap <leader>gc :Git commit<CR> " Git commit nnoremap <leader>gd :Gdiff<CR> " Git diff nnoremap <leader>gl :Glog<CR> " Git log nnoremap <leader>gp :Git push<CR> " Git push nnoremap <leader>gs :Gstatus<CR> " Git status nnoremap <leader>gw :Gwrite<CR> " Git write " 设置状态栏主题 let g:airline_theme='molokai' ``` 保存并退出`~/.vimrc`文件,然后打开vim,执行以下命令,安装配置好的插件: ``` :PluginInstall ``` Vundle将自动从GitHub上下载和安装已列出的插件。 至此,你的vim插件全套配置已完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值