vim中一些好用的插件

vim-plug

plug***是一个***极简主义的vim插件管理器,我们接下来所提到的插件都将用它来安装。

***plug***的安装方式如下:
$ mkdir ~/.vim/autoload/ $ cd ~/.vim/autoload/ $ wget https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

YCM

大名鼎鼎的***ycm***可以说是程序员的必备插件,是代码补全的神器,它算是***vim***插件中一个比较重的插件了。

我这里只说明一下Mac下的安装,Linux下是类似的安装过程。详细的安装和配置过程可以参考我的另一篇博客

LeaderF

***LeaderF***是一个非常强大的***文件模糊搜索***工具,真的是非常好用!


auto-pairs

它的基本功能是可以***自动插入配对的符号,如括号,引号等。***至于其他的一些功能,这里就不多说了,大家可以自行去了解了解。

vim-airline

写代码怎么能缺少一个漂亮的状态栏呢,***vim-airline***正是这样一个状态栏美化插件,它要比***powerline***更加强大。


是不是感觉美不胜收啊,那就赶快去体验吧!

nerdtree

***nerdtree***是一个文件资源管理器,可以在***vim***的边栏中显示出树形目录。
但当你使用了这个插件后,你会发现,它本身的颜色比较单调,实际上还有与它配对的几个插件,当它们一同工作时,会使你的边栏更加漂亮。

vim-nerdtree-syntax-highlight使文件类型高亮。
nerdtree-git-plugin显示git状态。
它们的效果如下:

nerdcommenter

这是一个***快速代码注释插件***,是一个非常实用的插件,也是我非常喜欢的一个插件。
当我们在***debug***时,往往需要注释一段代码去观察程序的运行行为,这时候正是***nerdcommenter***发挥强大作用的时候了。

你可以用;cm注释你在visual模式下选中的一段代码,然后关闭保存,去运行该程序;当你再次打开这个文件时,你可以用;cu去取消刚才的注释。这样极大的方便了程序的***debug***。(这里的;是***vimrc***中设置的***全局映射键***)。

tagbar

它是***taglist***的替代品,可以在边栏***显示类/方法/变量***。

ale

ale***是一个代码***异步语法检查插件。它可以在你写代码的同时自动进行语法检查。

rainbow_parentheses

这个插件的作用就是***彩色高亮括号***。

vim-devicons

它可以根据不同的文件类型显示不同的图标,算是颜值党的一个福利了。^0^

这里写图片描述


安装

将以下代码段加入到***.vimrc***中。

let mapleader = ";"    " 定义<leader>键
filetype on            " 开启文件类型检测
filetype plugin on     " 设置加载对应文件类型的插件

call plug#begin('.vim/plugged')

" 比ctrlp更强大的文件模糊搜索工具(非常好用)
Plug 'Yggdroot/LeaderF'
" 优化搜索,移动光标后清除高亮
Plug 'junegunn/vim-slash'
" 异步语法检查
Plug 'w0rp/ale'
" 自动补全括号
Plug 'jiangmiao/auto-pairs'
" 彩色高亮括号
Plug 'kien/rainbow_parentheses.vim'
" 代码资源管理器(显示树形目录)
Plug 'scrooloose/nerdtree'
" 快速代码注释插件
Plug 'scrooloose/nerdcommenter'
" nerdtree文件类型高亮
Plug 'tiagofumo/vim-nerdtree-syntax-highlight'
" nerdtree显示git状态
Plug 'xuyuanp/nerdtree-git-plugin'
" 显示类/方法/变量 
Plug 'majutsushi/tagbar'
" 状态栏美化插件
Plug 'vim-airline/vim-airline'
" airline的主题
Plug 'vim-airline/vim-airline-themes'
" 显示文件类型图标
Plug 'ryanoasis/vim-devicons' 

call plug#end()

" 安装、更新、删除插件
nnoremap <leader><leader>i :PlugInstall<cr>
nnoremap <leader><leader>u :PlugUpdate<cr>
nnoremap <leader><leader>c :PlugClean<cr>

配置

我的语法高亮主题使用的是***monokai***,airline***的主题使用的是***base16_monokai,两者是非常相配的。虽然后者让我尝试了好久,但结果是令人满意的。

尤其是***base16_monokai***这个主题,它的色彩非常丰富,对于***vim***的每种状态,它都有对应的颜色变化。




当然,airline的主题非常多,你可以选择你自己喜欢的。

" 主题
set background=dark
let g:onedark_termcolors=256
colorscheme monokai

" airline
let g:airline_theme="base16_monokai"
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1
if !exists('g:airline_symbols')
    let g:airline_symbols = {}
endif
let g:airline_left_sep = ''
let g:airline_left_alt_sep = ''
let g:airline_right_sep = ''
let g:airline_right_alt_sep = ''

" nerdtree
nnoremap <silent> <leader>n :NERDTreeToggle<cr>
inoremap <silent> <leader>n <esc> :NERDTreeToggle<cr>
let g:NERDTreeFileExtensionHighlightFullName = 1
let g:NERDTreeExactMatchHighlightFullName = 1
let g:NERDTreePatternMatchHighlightFullName = 1
let g:NERDTreeHighlightFolders = 1         
let g:NERDTreeHighlightFoldersFullName = 1 
let g:NERDTreeDirArrowExpandable='▷'
let g:NERDTreeDirArrowCollapsible='▼'

" nerdcommenter
let NERDSpaceDelims=2       " 注释符与语句之间保留2个空格   
" <;cc> 注释当前行        <;cm> 对选中的范围多行注释        <;cs> 以性感的方式注释
" <;cu> 取消注释          <;ca> 切换注释方式        

" tagbar
let g:tagbar_width = 30
nnoremap <silent> <leader>t :TagbarToggle<cr>
inoremap <silent> <leader>t <esc> :TagbarToggle<cr>

" cpp_class_scope_highlight
let g:cpp_class_scope_highlight = 1
let g:cpp_experimental_template_highlight = 1
let c_no_curly_error = 1

" rainbow_parentheses
let g:rbpt_colorpairs = [
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['darkred',     'SeaGreen3'],
    \ ['darkcyan',    'RoyalBlue3'],
    \ ['darkgreen',   'firebrick3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['darkcyan',    'SeaGreen3'],
    \ ['darkgreen',   'RoyalBlue3'],
    \ ['darkred',     'DarkOrchid3'],
    \ ['red',         'firebrick3'],
    \ ]
let g:rbpt_max = 16
let g:rbpt_loadcmd_toggle = 0
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound     " ()
au Syntax * RainbowParenthesesLoadSquare    " []
au Syntax * RainbowParenthesesLoadBraces    " {}

" nerdtree-git-plugin
let g:NERDTreeIndicatorMapCustom = {
    \ "Modified"  : "✹",
    \ "Staged"    : "✚",
    \ "Untracked" : "✭",
    \ "Renamed"   : "➜",
    \ "Unmerged"  : "═",
    \ "Deleted"   : "✖",
    \ "Dirty"     : "✗",
    \ "Clean"     : "✔︎",
    \ 'Ignored'   : '☒',
    \ "Unknown"   : "?"
    \ }

" LeaderF
nnoremap <leader>f :LeaderfFile ~<cr>
let g:Lf_WildIgnore = {
            \ 'dir': ['.svn','.git','.hg','.vscode','.wine','.deepinwine','.oh-my-zsh'],
            \ 'file': ['*.sw?','~$*','*.bak','*.exe','*.o','*.so','*.py[co]']
            \}
let g:Lf_UseCache = 0

" ale
let g:ale_set_highlights = 0
let g:ale_sign_error = '✗'
let g:ale_sign_warning = '⚡'
" 在vim自带的状态栏中整合ale
let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK']
" 显示Linter名称,出错或警告等相关信息
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
" 打开文件时不进行检查
let g:ale_lint_on_enter = 0
" 普通模式下,sp前往上一个错误或警告,sn前往下一个错误或警告
nmap sp <Plug>(ale_previous_wrap)
nmap sn <Plug>(ale_next_wrap)
" <Leader>s触发/关闭语法检查
nmap <Leader>s :ALEToggle<CR>
" <Leader>d查看错误或警告的详细信息
nmap <Leader>v :ALEDetail<CR>
" 使用clang对c和c++进行语法检查,对python使用pylint进行语法检查
let g:ale_linters = {
\   'c++': ['clang'],
\   'c': ['clang'],
\   'python': ['pylint'],
\}

猜你喜欢

转载自blog.csdn.net/qq_41145192/article/details/82719019