vim插件的安装和配置

时间:2022-12-16 05:00:30

1.安装vim。Ubuntu下安装方式 sudoapt install vim.

 2.安装vundle。vundle是vim下的插件管理软件。可以实现插件的自动管理。所以先安装它。

      (1)在 ~ 目录下建 .vim文件夹。

       (2)执行  git clonehttp://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/vundle.vim

       注:没有git 的话,要安装。

 3.在 ~ 目录下见文件 .vimrc 。把自己配置好的内容放进去。

 4.打开vim  命令行输入PluginInstall  。开始安装 .vimrc 里面添加好的插件。




1.要使用我配置的vim 你应该在shell下先安装ack-grep 和 ctags 两个软件。

2.安装vundle

3.在~目录下建  .vimrc 里面放配置信息  .indexer_files里面放模块补全信息.

   在~/.vim/bundle/ultisnips/建mysnippets目录,里面放**.snippets文件

4.然后就可以PluginInstall了.


下面附上我的 .vimrc 文件代码。

" All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by
" the call to :runtime you can find below.  If you wish to change any of those
" settings, you should do it in this file (/etc/vim/vimrc), since debian.vim
" will be overwritten everytime an upgrade of the vim packages is performed.
" It is recommended to make changes after sourcing debian.vim since it alters
" the value of the 'compatible' option.

" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
runtime! debian.vim

" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
" options, so any other options should be set AFTER setting 'compatible'.
"set compatible

" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
if has("syntax")
  syntax on
endif

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
"set background=dark

" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

" Uncomment the following to have Vim load indentation rules and plugins
" according to the detected filetype.
if has("autocmd")
  filetype plugin indent on
endif

" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
"set showcmd        " Show (partial) command in status line.
"set showmatch        " Show matching brackets.
"set ignorecase        " Do case insensitive matching
"set smartcase        " Do smart case matching
"set incsearch        " Incremental search
"set autowrite        " Automatically save before commands like :next and :make
"set hidden        " Hide buffers when they are abandoned
"set mouse=a        " Enable mouse usage (all modes)

" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"定义快捷键前缀
let mapleader=";"
"打开文件类型监听
filetype on
filetype plugin on
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"插件都放在这×××××××××××××××××××××××××××××××××××××××××××××××××
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"颜色插件       只能设置一个        有设置              00000000
"无命令:
Plugin 'altercation/vim-colors-solarized'
Plugin 'vim-scripts/phd'
Plugin 'tomasr/molokai'
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"基于缩进的可视阅读插件             有设置              00000001
"无命令:
Plugin 'nathanaelkane/vim-indent-guides'
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"书签插件                           无设置              00000010
"有命令:
"               m,      顺序书签
"               m-      删除书签
"               ']      遍历书签
"               '[      同上
Plugin 'kshenoy/vim-signature'
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"注释插件       比较方便            无设置              00000011
"有命令:
"               ;cc     注释选中区
"               ;cu     取消
Plugin 'scrooloose/nerdcommenter'
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"模块补全插件   这个要多说几句了。自身并没有带预定已代码模板,
"可以从http://github.com/honza/vim-snippets获取。要把模板放在
"~/.vim/bundle/下子目录,我们放在
"~/.vim/bundle/ultisnips/mysnippets/下,要注意命名规范。
"并要有let g:UltiSnipsSnippetDirectories=["mysnippets"].
"                                   有设置              00000100
"有命令:
"               键入关键字后按ctrl 就行
Plugin 'SirVer/ultisnips'
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"工程文件列表插件                   有设置              00000101
"有命令:
"               ;fl     打开列表
"               q       退出
"               o       打开或折叠
Plugin 'scrooloose/nerdtree'
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"多文档编辑插件                     有设置              00000110
"有命令:
"               ;bl     显示或隐藏窗口
"               ;jl     向左遍历
"               ;k;     向右
"               ctrl+ww 高亮一个
"               光标在时 d 可删除文件
"               在时 v s  分别打开另一个窗口
Plugin 'fholgado/minibufexpl.vim'
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"查找插件       必须在shell中执行sudo apt install ack-grep 获取
"               查找能力才可以查找。有设置              00000111
"有命令:
"               把光标放在要查找出  ;sp     查找
"                                   p       查看完整
"                                   q       退出
"                                   回车    进入查找处
Plugin 'yegappan/grep'
Plugin 'mileszs/ack.vim'
Plugin 'dyng/ctrlsf.vim'
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"多光标编辑插件                     有设置              00001000
"有命令:
"               在可视模式下选中,可用ctrl+n选中一样的;
"               然后可同时操作几个光标
Plugin 'terryma/vim-multiple-cursors'
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"vim自带有强大的精确替换功能,所以下面只有设置,没插件。
"命令:                     
"               <Leader>R       不用确认,非整词替换
"这个最常用     <Leader>rw       不用确认,整词替换
"               <Leader>rc       确认,非整词替换
"               <Leader>rcw  <Leader>rwc       确认,整词替换
"                           
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"下面四个插件放一块吧。就是基于标签做的很牛的事!!!
"先在shell下安装ctags.命令:sudo apt install ctags   

"基于标签的标识符列表插件           有设置              00001001
"有命令:
"               ;ilt    列出文件中全部标签,可以选中跳转
"               ;tn     可以实现声明和定义在文件间的跳转
"               但前提是先ctrl+]压入桟
"               ;tp     反跳
"               ctrl+i ctrl+o ctrl+t 等实现返回
Plugin 'majutsushi/tagbar'
""""""""""""""""""""""""""""
"这三个插件实现自动生成引入标签,indexer 依赖 DfrankUtil 和 vimprj。
"实现不用再执行下面命令来生成标签。
"ctags-R --c-kinds=+p+l+x+c+d+e+f+g+m+n+s+t+u+v --fields=+liaS --extra=+q --language-force=c
"                                   有设置              00001010
"无命令:

"但要在~/.indexer_files内配置工程信息!!!!!!!!!!!!!!
" 自动生成的标签都在~/.indexer_files_tags里
Plugin 'vim-scripts/indexer.tar.gz'
Plugin 'vim-scripts/DfrankUtil'
Plugin 'vim-scripts/vimprj'
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
call vundle#end()
filetype plugin indent on

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"background set
set background=dark
colorscheme molokai
"colorscheme solarized
"colorscheme phd

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"cursor set
set gcr=a:block-blinkon0
set number
set cursorline
set cursorcolumn
set ruler
"set laststatus=2
"set guifont=YaHei\ Consolas\ Hybrid\ 11.5

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"tab set缩进
filetype indent on
set expandtab
set tabstop=8
set shiftwidth=8
set softtabstop=8

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"fold the text 折叠
"za  zM   zR
set foldmethod=indent
set foldmethod=syntax
set nofoldenable

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"基于缩进的快捷阅读
let g:indent_guides_enable_on_vim_startup=1
let g:indent_guides_start_level=2
let g:indent_guides_guide_size=1
:nmap <silent> <Leader>i <Plug>IndentGuidesToggle

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"书签快捷键
"let g:SignatureMap = {
 "       \ 'Leader'             :  "m",
 "       \ 'PlaceNextMark'      :  "m,", 标记
 "       \ 'PurgeMarksAtLine'   :  "m-", 删除
 "       \ 'PurgeMarks'         :  "mda",全删
 "       \ 'GotoNextLineAlpha'  :  "']",遍历
 "       \ 'GotoPrevLineAlpha'  :  "'[", "       \ 'GotoNextLineByPos'  :  "]'",
 "       \ 'GotoPrevLineByPos'  :  "['",
 "       \ }
""//
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

let g:UltiSnipsSnippetDirectories=["mysnippets"]
"let g:UltiSnipsExpandTrigger="<Leader><tab>"
"let g:UltiSnipsJumpForwardTrigger="<Leader><tab>"
"let g:UltiSnipsJumpBackwardTrigger="<Leader><s-tab>"

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 使用 NERDTree 插件查看工程文件。设置快捷键,速记:file list
nmap <Leader>fl :NERDTreeToggle<CR>
" 设置NERDTree子窗口宽度
let NERDTreeWinSize=22
" 设置NERDTree子窗口位置
let NERDTreeWinPos="left"
" 显示隐藏文件
let NERDTreeShowHidden=1
" NERDTree 子窗口中不显示冗余帮助信息
let NERDTreeMinimalUI=1
" 删除文件时自动删除文件对应 buffer
let NERDTreeAutoDeleteBuffer=1

"注:    <Leader>fl  打开
"         q          退出
"         P         到根目录
"         o         展开或折叠
"         p         跳到文节点
"         t         在新tab中打开
"         T         选中文件

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"注:::::之前一定要在shell下安装ack,才能使用。
"内容查找sp =  search in project
nnoremap <Leader>sp :CtrlSF<CR>
"   ;sp查找该关键字
"   p  查看
"   q  退出
"   回车  进入此处
"
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"多光标功能,强大到无敌。除了用于全局替换,还可以实现很多炫酷的功能。
"<ctrl-n>  ,用于选择下一个一样的字符串
"可视化下选择,然后便可操作
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 替换函数。参数说明:
" confirm:是否替换前逐一确认
" wholeword:是否整词匹配
" replace:被替换字符串
function! Replace(confirm, wholeword, replace)
    wa
    let flag = ''
    if a:confirm
        let flag .= 'gec'
    else
        let flag .= 'ge'
    endif
    let search = ''
    if a:wholeword
        let search .= '\<' . escape(expand('<cword>'), '/\.*$^~[') . '\>'
    else
        let search .= expand('<cword>')
    endif
    let replace = escape(a:replace, '/\&~')
    execute 'argdo %s/' . search . '/' . replace . '/' . flag . '| update'
endfunction
" 不确认、非整词
nnoremap <Leader>R :call Replace(0, 0, input('Replace '.expand('<cword>').' with: '))<CR>
" 不确认、整词
nnoremap <Leader>rw :call Replace(0, 1, input('Replace '.expand('<cword>').' with: '))<CR>
" 确认、非整词
nnoremap <Leader>rc :call Replace(1, 0, input('Replace '.expand('<cword>').' with: '))<CR>
" 确认、整词
nnoremap <Leader>rcw :call Replace(1, 1, input('Replace '.expand('<cword>').' with: '))<CR>
nnoremap <Leader>rwc :call Replace(1, 1, input('Replace '.expand('<cword>').' with: '))<CR>

"常用的是  ;rw 不需确定但整词替换。
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 设置子窗口在右边
let tagbar_right=1
" 显示/隐藏列表窗口快捷键。速记:identifier list by tag
nnoremap <Leader>ilt :TagbarToggle<CR>
" 设置窗口宽度
let tagbar_width=32
" 窗口不显示冗余帮助信息
let g:tagbar_compact=1
" 设置 ctags 对哪些代码标识符生成标签
let g:tagbar_type_cpp = {
    \ 'kinds' : [
         \ 'c:classes:0:1',
         \ 'd:macros:0:1',
         \ 'e:enumerators:0:0',
         \ 'f:functions:0:1',
         \ 'g:enumeration:0:1',
         \ 'l:local:0:1',
         \ 'm:members:0:1',
         \ 'n:namespaces:0:1',
         \ 'p:functions_prototypes:0:1',
         \ 's:structs:0:1',
         \ 't:typedefs:0:1',
         \ 'u:unions:0:1',
         \ 'v:global:0:1',
         \ 'x:external:0:1'
     \ ],
     \ 'sro'        : '::',
     \ 'kind2scope' : {
         \ 'g' : 'enum',
         \ 'n' : 'namespace',
         \ 'c' : 'class',
         \ 's' : 'struct',
         \ 'u' : 'union'
     \ },
     \ 'scope2kind' : {
         \ 'enum'      : 'g',
         \ 'namespace' : 'n',
         \ 'class'     : 'c',
         \ 'struct'    : 's',
         \ 'union'     : 'u'
     \ }
\ }


"下面是声明/定义跳转的设置

"  g] 命名罗列出来
"
"  ctrl+]  把标签压入标签栈里,才可以遍历 一定要先压入栈!!!!!!!!!!
nmap <Leader>tn :tnext<CR>
nmap <Leader>tp :tprevious<CR>

" ctrl+t  返回查找位置。
"  再次进入 ctrl+i
" ctrl+o 也是返回。和Ctrl+t 不同
"""""""""""""""""""""""""""""""""""下面要装3个插件满足一个功能,即:不用再输入
"ctags-R --c-kinds=+p+l+x+c+d+e+f+g+m+n+s+t+u+v --fields=+liaS --extra=+q --language-force=c
"了。三个插件是 indexer  它依赖 DfrankUtil 和 vimprj .


" 设置插件 indexer 调用 ctags 的参数
" 默认 --c++-kinds=+p+l,重新设置为 --c++-kinds=+p+l+x+c+d+e+f+g+m+n+s+t+u+v
" 默认 --fields=+iaS 不满足 YCM 要求,需改为 --fields=+iaSl
let g:indexer_ctagsCommandLineOptions="--c++-kinds=+p+l+x+c+d+e+f+g+m+n+s+t+u+v --fields=+iaSl --extra=+q"


"一定要在~/indexer_files文件中加入工程所在目录,才能自动实现生成标签并引入。
"可以在~/indexer_files_tags目录下找到。


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"多文档编辑的插件设置,不确定.先放这
map <Leader>bl :MBEToggle<CR>
map <Leader>kl :MBEbn<CR>
map <Leader>jl :MBEbp<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

autocmd BufWritePost $MYVIMRC source $MYVIMRC


如果想配置其他的话可以qq我,1322451032@qq.com


下面是我的 c.snippets 文件的配置代码。

#=================================
#预处理
#=================================
# 1  文件头  键入 my.
snippet my
/*功能 :${1:TODO}
 *
 *设计者: LDK          
 *
 *版本及日期:${2}
 *
 *细节:
 *
*/
endsnippet

# 2  函数描述。键入 fun
snippet fun
/***********************************************************
*功能:${1:TODO}
*参数:
*    ${2:T}
*
*
*返回值:
***********************************************************/

{
    ${3:T}
}
endsnippet

# 3   #include "..."
snippet INC
#include "${1:TODO}"${2}
endsnippet
# #include <...>
snippet inc
#include <${1:TODO}>${2}
endsnippet


# #printf
snippet pr
printf("${1:/*printf*/}");
endsnippet


#=================================
#  4  结构语句
#=================================
# if
snippet if
if (${1:/* condition */}) {
    ${2:}
}
endsnippet

# else if
snippet ei
else if (${1:/* condition */}) {
    ${2:}
}
endsnippet

# else
snippet el
else {
    ${1}
}
endsnippet

# return
snippet re
return(${1:/* condition */});
endsnippet
# Do While Loop
snippet do
do {
    ${2:TODO}
} while (${1:/* condition */});
endsnippet
# While Loop
snippet wh
while (${1:/* condition */}) {
    ${2:}
}
endsnippet
# switch
snippet sw
switch (${1:/* condition */}) {
case ${2:TODO}:
{
    ${3:T}
}
break;
default:
{
    ${4:T}
}
break;
}
endsnippet
snippet ca
case ${1:TODO}:
{
        ${2:}
}
break;
endsnippet
snippet for
for (${1:/* condition */}){
    ${2:TODO}
}
endsnippet

snippet {}
{
    ${1:TODO}
}
endsnippet
#=================================
#结对符
#=================================
 # 括号 bracket
snippet b "bracket" i
(${1})${2}
endsnippet
# 方括号 square bracket,设定为 st 而非 sb,避免与 b 冲突
snippet st "square bracket" i
[${1}]${2}
endsnippet
# 大括号 brace
snippet br "brace" i
{
    ${1}
}${2}
endsnippet
# 单引号 single quote,设定为 se 而非 sq,避免与 q 冲突
snippet se "single quote" I
'${1}'${2}
endsnippet
# 双引号 quote
snippet q "quote" I
"${1}"${2}
endsnippet
# 指针符号 arrow
snippet ar "arrow" i
->${1}
endsnippet
# dot
snippet d "dot" i
.${1}
endsnippet
# 作用域 scope
snippet s "scope" i
::${1}
endsnippet


想知道上面有具体的快捷键。有问题可以联系我QQ同上。