《LINUX教学:Vim配置详解》要点: 本文介绍了LINUX教学:Vim配置详解,希望对您有用。如果有疑问,可以联系我们。
Linux下的编辑器以vim和emacs为主流,一个编辑器之神,一个是神的编辑器.本文以主要介绍如安在linux下以vim为基础搭建一个比较顺手的代码编辑器.
自动安装 手动安装
这种是办法是比较省事的办法,只要一个.vimrc配置文件就可以搞定所有的事情,一次配好即可.以后只要有这个配置文件,就可以走遍天下. 这种方式需要使用一个VIM插件管理工具来自动管理VIM插件的安装与卸载,笔者使用的Vundle来管理VIM插件,Vundle的全称是Vim Bundle,它是一款Vim插件管理工具.Vundle让你可以非常轻松地安装、更新、搜索和清理Vim插件.它还能管理你的运行时环境,并帮助标记.
-
- 可以在Github上下载Vundle: https://github.com/VundleVim/Vundle.vim
下载完成后,解压到用户根目次的.vim目次下即可
-
- 在终端(命令行)中使用git clone获取: git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
clone完成后,会在用户根目录下多出来一个bundle目录,此时Vundle已经安装完成.安装好Vundle以后,就可以根据本身的需要安装插件了.Vundle提供了几种不同的插件安装方式,一般我们用到的插件在github都可以找到,因此最常用的一般就是直接找github上插件对应的仓名,添加到.vimrc中即可.然后打开vim,执行:PluginInstall命令,即可自动安装,等待Vundle执行完下载安装操作后,就可以开始享受VIM了.
笔者的.vimrc文件配置如下:
"=============================================================================================== 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() " alternatively,pass a path where Vundle should install plugins "call vundle#begin('~/some/path/here')
" let Vundle manage Vundle,required Plugin 'VundleVim/Vundle.vim'
" The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html Plugin 'L9'
" Git plugin not hosted on GitHub "Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin) "Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim. " Pass the path to set the runtimepath properly. "Plugin 'rstacruz/sparkup',{'rtp': 'vim/'}
" Install L9 and avoid a Naming conflict if you've already installed a " different version somewhere else. "Plugin 'ascenator/L9',{'name': 'newL9'}
" All of your Plugins must be added before the following line
"============================ my plugins start ============================= Plugin 'scrooloose/nerdtree' Plugin 'kien/ctrlp.vim' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'majutsushi/tagbar' Plugin 'tacahiroy/ctrlp-funky' Plugin 'jlanzarotta/bufexplorer' Plugin 'easymotion/vim-easymotion' Plugin 'haya14busa/incsearch.vim' Plugin 'dkprice/vim-easygrep' Plugin 'dyng/ctrlsf.vim' Plugin 'Xuyuanp/nerdtree-git-plugin' Plugin 'hfts/Porsche' Plugin 'vim-scripts/OmniCppComplete' Plugin 'vim-scripts/AutoComplPop' Plugin 'scrooloose/nerdcommenter'
"============================ my plugins end ===============================
call vundle#end() " required filetype plugin indent on " required " To ignore plugin indent changes,instead use: "filetype plugin on " " Brief help " :PluginList - lists configured plugins " :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate " :PluginSearch foo - searches for foo; append `!` to refresh local cache " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " " see :h vundle for more details or wiki for FAQ " Put your non-Plugin stuff after this line
"========== for vim ============== syntax enable " 开启语法高亮 set t_Co=256 " 开启256色显示 set scrolloff=3 " 滚动时坚持边距5行 set number " 开启行号显示 set mouse=a " 开启鼠标 set cmdheight=1 set nocompatible set confirm " 在处理未保存或只读文件的时候,弹出确认 set autoindent? ? " 自动缩进 set tabstop=4? ? " Tab键的宽度 set expandtab " 展开tab为空格 set softtabstop=4? ? " 统一缩进为4 set shiftwidth=4 filetype plugin indent on "打开文件类型检测,加了这句才可以用智能补全 set completeopt=longest,menu set hlsearch " 高亮搜索 set laststatus=1 " 始终显示状态栏 set encoding=utf-8 " set ignorecase " 搜索忽略大小写 set nopaste " 切换到正常模式 set list lcs=tab:| " 显示对齐线 | | ┆ │
colorscheme Porsche
set cursorline "hi cursorline cterm=none term=none "autocmd WinEnter * setlocal cursorline "autocmd WinLeave * setlocal nocursorline "highlight CursorLine guibg=#30F010 ctermbg=189
"自动补全 :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"
"========== for quick key ======= " F11默认时全屏 nmap <F2> :NERDTreeToggle<cr> nmap <F3> :TagbarToggle<CR> nmap <F4> :ToggleBufExplorer<cr> nmap <F5> :CtrlPFunky<cr> nmap <F10> :set paste<cr> " 切换到粘贴模式 nmap <F12> :source ~/.vimrc<cr> nmap <silent> <leader>ll :colorscheme Porsche<cr> nmap <silent> <leader>jj :colorscheme space-vim-dark<cr> nmap <silent> <leader>nm :set nonumber<cr> nmap <silent> <leader>mn :set number<cr> nmap <silent> <leader>ag :Ag<cr> nmap <silent> <leader>ff ::shell<cr>
"========== for NERDTree ============== "let g:NERDTree_title='NERD Tree' "let g:winManagerWindowLayout='NERDTree|TagList,Tarbar' autocmd vimenter * NERDTree nmap wm :NERDTreeToggle<cr> autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") ) | q | endif function! NERDTree_Start() exec 'NERDTree' endfunction function! NERDTree_IsValid() return 1 endfunction nmap <silent> mt :if IsWinManagerVisible() <BAR> WMToggle<CR> <BAR> else <BAR> WMToggle<CR>:q<CR> endif "<CR>
"========== for CtrlP =================== let g:ctrlp_map = '<c-p>' let g:ctrlp_cmd = 'CtrlP' let g:ctrlp_working_path_mode = 'r' let g:ctrlp_match_window = 'bottom,order:ttb,min:1,max:15,results:100' let g:ctrlp_tabpage_position = 'al' let g:ctrlp_working_path_mode = 'r' let g:ctrlp_reuse_window = 'netrw|help|quickfix' let g:ctrlp_open_new_file = 't' let g:ctrlp_open_multiple_files = 'tjr' let g:ctrlp_arg_map = 1 let g:ctrlp_extensions = ['tag','buffertag','quickfix','dir','rtscript', 'undo','line','changes','mixed','bookmarkdir'] set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.png,*.jpg,*.jpeg,*.gif " MacOSX/Linux let g:ctrlp_custom_ignore = 'v[/].(git|hg|svn)$'
if executable('ag') " Use Ag over Grep set grepprg=ag --nogroup --nocolor " Use ag in CtrlP for listing files. let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' " Ag is fast enough that CtrlP doesn't need to cache let g:ctrlp_use_caching = 0 endif
"========== for CtrlPFunky ============== nnoremap <Leader>u :execute 'CtrlPFunky ' . expand('<cword>')<Cr> let g:ctrlp_extensions = ['funky'] let g:ctrlp_funky_syntax_highlight = 1 let g:ctrlp_funky_matchtype = 'path' let g:ctrlp_funky_nerdtree_include_files = 1
"========== for vim-airline ============== let g:airline_theme="light" "light let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = '|'
"========== for EasyMotion ============== " <Leader>f{char} to move to {char} map <Leader>f <Plug>(easymotion-bd-f) nmap <Leader>f <Plug>(easymotion-overwin-f) " s{char}{char} to move to {char}{char} nmap s <Plug>(easymotion-overwin-f2) " Move to line map <Leader>L <Plug>(easymotion-bd-jk) nmap <Leader>L <Plug>(easymotion-overwin-line) " Move to word map <Leader>w <Plug>(easymotion-bd-w) nmap <Leader>w <Plug>(easymotion-overwin-w)
"========== for insearch ============== map / <Plug>(incsearch-forward) map ? <Plug>(incsearch-backward) map g/ <Plug>(incsearch-stay) nnoremap <Esc><Esc> :<C-u>nohlsearch<CR> "set incsearch set hlsearch let g:incsearch#auto_nohlsearch = 0 map n <Plug>(incsearch-nohl-n) map N <Plug>(incsearch-nohl-N) map * <Plug>(incsearch-nohl-*) map # <Plug>(incsearch-nohl-#) map g* <Plug>(incsearch-nohl-g*) map g# <Plug>(incsearch-nohl-g#)
"=========== for NERDTREE-GIT-PLUGIN ===== let g:NERDTreeIndicatorMapCustom = { "Modified" : "?", "Staged" : "?", "Untracked" : "?", "Renamed" : "?", "Unmerged" : "═", "Deleted" : "?", "Dirty" : "?", "Clean" : "??", "Unknown" : "?" }
"=========== cscope =============== if has("cscope") set csprg=/usr/local/bin/cscope set csto=0 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif set csverb endif nmap <C-&;s :cs find s <C-R>=expand("<cword>")<CR><CR> nmap <C-&;g :cs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-&;c :cs find c <C-R>=expand("<cword>")<CR><CR> nmap <C-&;t :cs find t <C-R>=expand("<cword>")<CR><CR> nmap <C-&;e :cs find e <C-R>=expand("<cword>")<CR><CR> nmap <C-&;f :cs find f <C-R>=expand("<cfile>")<CR><CR> nmap <C-&;i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR> nmap <C-&;d :cs find d <C-R>=expand("<cword>")<CR><CR>
"=========== omnicppcomplete =============== let OmniCpp_GlobalScopeSearch = 1 let OmniCpp_NamespaceSearch = 2 let OmniCpp_DisplayMode = 1 let OmniCpp_ShowScopeInAbbr = 1 let OmniCpp_ShowPrototypeInAbbr = 1 let OmniCpp_ShowAccess = 1 let OmniCpp_MayCompleteDot = 1 let OmniCpp_MayCompleteArrow = 1 let OmniCpp_MayCompleteScope = 1 let OmniCpp_MayCompleteScope = 1 let OmniCpp_SelectFirstItem = 1 let OmniCpp_DefaultNamespace=["std"] let OmniCpp_SelectFirstItem = 2
"===============NERD Commenter========================= let g:NERDSpaceDelims = 1 " Add spaces after comment delimiters by default let g:NERDCompactSexyComs = 1 " Use compact syntax for prettified multi-line comments let g:NERDDefaultAlign = 'left' " Align line-wise comment delimiters flush left instead of following code indentation let g:NERDAltDelims_java = 1 " Set a language to use its alternate delimiters by default let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } } " Add your own custom formats or override the defaults let g:NERDCommentEmptyLines = 1 " Allow commenting and inverting empty lines (useful when commenting a region) let g:NERDTrimTrailingWhitespace = 1 " Enable trimming of trailing whitespace when uncommenting "===============================================================================================
手动安装,当然是要自己一个一个地安装插件了.这种方式的特点是需要自己一个一下下载vim插件,然后手动进行安装.虽然比较费事,但如果之前有vim插件安装包的备份文件,那就可以不依赖于网络.所以还是保举在自己的本地留一份常用插件的安装包备份.手动安装的过程比较简单,基本上就是“下载-解压”,先从网卡下载好插件的压缩包,一般来说直接解压到.vim目录中即可.
笔者常用的几个插件如下,一般都可以在github上找到,其实从上面的配置文件中就可以找到笔者使用了哪些vim插件. Plugin 'scrooloose/nerdtree' Plugin 'kien/ctrlp.vim' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'majutsushi/tagbar' Plugin 'tacahiroy/ctrlp-funky' Plugin 'jlanzarotta/bufexplorer' Plugin 'easymotion/vim-easymotion' Plugin 'haya14busa/incsearch.vim' Plugin 'dkprice/vim-easygrep' Plugin 'dyng/ctrlsf.vim' Plugin 'Xuyuanp/nerdtree-git-plugin' Plugin 'hfts/Porsche' Plugin 'vim-scripts/OmniCppComplete' Plugin 'vim-scripts/AutoComplPop' Plugin 'scrooloose/nerdcommenter'
末了,附上笔者vim的两张截图:


Vim入门根基知识集锦?
Vim入门根基教程
把Vim打造成优秀的C++ IDE?
Ubuntu 14.04进级Vim7.4到8.0?
Vim安装youcompleteme自动补全插件?
Linux Vim编纂器使用简单讲解?
Vim文本编纂器?
Vim安装与设置装备摆设进阶版
Vim编纂器使用教程?
Ubuntu 16.04 Vim YouCompleteMe自动补全的安装设置装备摆设与使用?
Linux文本编纂器Vim基础教程?
本文永远更新链接地址:? 学习更多LINUX教程,请查看站内专栏,如果有LINUX疑问,可以加QQ交流咨询。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|