VIM 插件配置
vimrc 通用配置
syntax on " 自动语法高亮
set number " 显示行号
set tabstop=4 " 设定 tab 长度为 4
set shiftwidth=4 " 设置自动缩进宽度
set autoindent " 设置自动缩进
set cindent " 设置使用C/C++的缩进方式
set autoread " 设置文件在vim外改动时自动载入
set ignorecase " 搜索时忽略大小写
set incsearch " 输入搜索内容时就显示搜索结果
set hlsearch " 搜索时高亮显示被找到的文本
set encoding=utf-8 " 设置编码为UTF-8
" set mouse=a " 开启鼠标功能
set termencoding=utf-8 " 设置终端字符编码方式
set fileencoding=utf-8 " 设置文件字符编码方式
set fileencodings=ucs-bom,utf-8,chinese
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nnoremap <CR> G " 回车定位到文件尾
map <C-s> :wq<CR> " ctrl+s 保存
map <C-c> :q<CR> " ctrl+c 退出
vim 插件
vundle.vim 是自动化的插件管理工具
pathogen 配置更自由的插件管理工具
SpaceVim 模块化的 Vim IDE
一、 vundle.vim
vundle.vim 安装:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
vimrc 配置:
set nocompatible filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' Plugin 'tpope/vim-fugitive' Plugin 'scrooloose/nerdtree' Plugin 'jiangmiao/auto-pairs' Plugin 'jeffkreeftmeijer/vim-numbertoggle' call vundle#end() filetype plugin indent on
二、 pathogen
1. 插件安装
pathogen 安装:
git clone https://github.com/tpope/vim-pathogen.git ~/.vim/
vimrc 配置:
" 启用pathogen call pathogen#infect() filetype plugin indent on
nerdtree (文件树形界面)
nerdtree 安装:
git clone https://github.com/preservim/nerdtree.git ~/.vim/bundle/nerdtree
vimrc 配置:
" F2 键打开/关闭 nerdtree nnoremap <F2> :NERDTreeToggle<CR>
ctags
ctags安装:
yum install ctags
vimrc配置:
nnoremap <F5> :!ctags -R<CR> " 配置快捷键
taglist(代码结构视图)
插件说明:
插件依赖 ctags,需先安装ctags
taglist 安装:
git clone https://github.com/vim-scripts/taglist.vim.git ~/.vim/bundle/taglist
vimrc 配置:
" F3 快捷键 打开/关闭 taglist nnoremap <F3> :TlistToggle<CR> "只显示当前文件的tags let Tlist_Show_One_File=1 "tagList窗口是最后一个窗口,则退出Vim let Tlist_Exit_OnlyWindow=1 "在Vim窗口右侧显示taglist窗口 let Tlist_Use_Right_Window=1 "设置Taglist高度 let Tlist_WinHeight=100 "设置taglist宽度 let Tlist_WinWidth=40
autocomplpop(变量、函数自动补全)
autocomplpop 安装:
git clone https://github.com/vim-scripts/AutoComplPop.git ~/.vim/bundle/autocomplpop
omnicppcomplete(C++类对象自动补全)
omnicppcomplete 安装:
git clone https://github.com/vim-scripts/OmniCppComplete.git ~/.vim/bundle/omnicppcomplete
vimrc 配置:
set completeopt=menu,menuone let OmniCpp_GlobalScopeSearch=1 "全局查找控制。0:禁止;1:允许(缺省) let OmniCpp_NamespaceSearch=1 "命名空间查找控制, 0,禁止; 1, 查找当前文件缓冲区内的命名空间(缺省); 2, 查找当前文件缓冲区和包含文件中的命名空间 let OmniCpp_MayCompleteDot=1 "操作符 . 号后自动提示; 0, 否; 1, 是 let OmniCpp_MayCompleteArrow=1 "操作符 -> 号后自动提示; 0, 否; 1, 是 let OmniCpp_MayCompleteScope=1 "操作符 :: 号后自动提示; 0, 否; 1, 是 let OmniCpp_DisplayMode=0 "类成员显示控制(是否显示全部公有(public)私有(private)保护(protected)成员). 0:自动; 1:显示所有成员 let OmniCpp_ShowPrototypeInAbbr = 1 "显示函数参数列表 let OmniCpp_DefaultNamespace=["std"] "默认命名空间列表, 项目间使用','隔开.
typescript-vim
vimcdoc 安装:
git clone https://github.com/leafgarland/typescript-vim.git ~/.vim/bundle/typescript-vim
vimcdoc(中文文档)
vimcdoc 安装:
git clone https://github.com/yianwillis/vimcdoc.git ~/.vim/bundle/vimcdoc
vimrc 配置:
set helplang=cn " 设置中文帮助 set langmenu=zh_CN.utf-8 " 设置菜单语言为中文
2. 快捷键及其他配置
- 括号、引号自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap { {}<ESC>i
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
func ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endfunc
- 新建文件时自动插入文件头
" 新建指定类型文件时,调用SetTitle函数
autocmd BufNewFile *.cpp,*.c,*.h,*.py,*.sh exec ":call SetTitle()"
" 定义函数SetTitle,自动插入文件头
func SetTitle()
if &filetype == 'python'
call setline(1, "\#===================================================================================")
call append(line(".")+0, "\# Copyright (C) ".strftime("%Y")." by xxx. All rights reserved")
call append(line(".")+1, "\# 文 件 名: ".expand("%"))
call append(line(".")+2, "\# 作 者: xxx")
call append(line(".")+3, "\# 创建时间: ".strftime("%Y年%m月%d日"))
call append(line(".")+4, "\# 描 述: ")
call append(line(".")+5, "\#===================================================================================*/")
call append(line(".")+6, "")
call append(line(".")+7, "\#!/usr/bin/python3")
call append(line(".")+8,"")
elseif &filetype == 'sh'
call setline(1, "\#===================================================================================")
call append(line(".")+0, "\# Copyright (C) ".strftime("%Y")." by xxx. All rights reserved")
call append(line(".")+1, "\# 文 件 名: ".expand("%"))
call append(line(".")+2, "\# 作 者: xxx")
call append(line(".")+3, "\# 创建时间: ".strftime("%Y年%m月%d日"))
call append(line(".")+4, "\# 描 述: ")
call append(line(".")+5, "\#===================================================================================*/")
call append(line(".")+6, "")
call append(line(".")+7, "\#!/bin/bash")
call append(line(".")+8,"")
elseif &filetype == 'c' || &filetype == 'cpp' || &filetype == 'h'
call setline(1, "\/\/ =====================================================================================")
call append(line(".")+0, "\/\/ Copyright (C) ".strftime("%Y")." by xxx. All rights reserved")
call append(line(".")+1, "\/\/ 文 件 名: ".expand("%"))
call append(line(".")+2, "\/\/ 作 者: xxx")
call append(line(".")+4, "\/\/ 创建时间: ".strftime("%Y年%m月%d日"))
call append(line(".")+6, "\/\/ 描 述: ")
call append(line(".")+7,"\/\/ =====================================================================================")
call append(line(".")+8,"")
endif
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
endfunc
三、SpaceVim
- 安装方式
curl -sLf https://spacevim.org/cn/install.sh | bash
安装结束后,初次打开 vim
或者 neovim
时,SpaceVim
会自动下载并安装插件。
首次安装完成后,打开VIM报错,可以尝试切换一下 SpaceVim
的分支
git checkout v2.0.0
SpaceVim 官网地址 https://spacevim.org/cn/
版权声明:本文为shao5166233原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。