2012-11-27 By BeiYuu javascript
最近整理了VIM的配置,換上插件管理的神器—–Vundle,由他引起的VIM生態環境的改善,堪稱完美。遂打算寫一份簡單的教程,分享Git時代VIM新世界的美麗動人之處。對VIM有基礎的同窗,可直接跳至插件管理部分。 php
第一次使用VIM,會以爲無所適從,他並不像記事本,你敲什麼鍵就顯示什麼,理解VIM的須要明白他的兩種模式: css
命令模式下,能夠作移動、編輯操做;編輯模式則用來輸入。鍵入i,o,s,a等便可進入編輯模式,後面解釋緣由。 html
模式的設計是VIM和其餘編輯器最不一樣的地方,優點和劣勢也全基於此而生。 前端
如下介紹的鍵盤操做,都是大小寫敏感的,而且要在命令模式下完成,需注意: java
這四個鍵在右手最容易碰到幾個位置,最爲經常使用。 git
助記:0(第0個字符),^和$含義同正則表達式 github
- { 上一段(以空白行分隔) - } 下一段(以空白行分隔) - % 跳到當前對應的括號上(適用各類配對符號) web
限於篇幅,在這裏我僅介紹下我很是經常使用的幾個操做。 正則表達式
由於VIM全部的操做都是原子化的,因此把這些操做程序化就很是簡單了:
VIM的基本操做,能夠挖掘的東西很是多,不只僅須要記憶,更須要本身去探索總結,熟練以後,效率會大幅度提高。後面會給出一些參考連接。
終於到這篇Blog我最想討論的部分了。VIM的強大不只僅體如今操做的高效率,更有強大而充沛的插件作支援,插件豐富了以後,就面臨查找和管理的問題。
在碰見Vundle以前,我用Pathogen管理插件。Pathogen還算方便,只須要把相應插件,放在bundle目錄下便可,不須要再像之前那樣逐個放置單獨的文件到相應目錄,大大節省了勞動力,管理起來也一目瞭然,以爲還不錯,至少比vimball那種須要執行命令安裝的方式好一些。
我真但願我早些碰見Vundle。Vundle受到Pathogen和Vimball的啓發,因而有了如今的模樣。Vundle的邏輯是這樣的:
完美的世界!
Vundle的安裝很簡單:
git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle而後寫配置文件.vimrc :
set nocompatible " be iMproved filetype off " required! set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " let Vundle manage Vundle " required! Bundle 'gmarik/vundle' " vim-scripts repos Bundle 'vim-plugin-foo' Bundle 'vim-plugin-bar' filetype plugin indent on " required!
其中Bundle後面的內容,就是插件的名字,插件維護在Vim-Script.org。
而後,打開VIM以後,能夠輸入如下命令:
"安裝插件: :BundleInstall "更新插件: :BundleInstall! "卸載不在列表中的插件: :BundleClean
如今大部分的插件都已經從Vim.org遷移到了Vim-Script.org,並且不少做者也認領了本身的插件,直接在這個Github的項目下更新,一個比Vim.org更科學更有效的生態環境,就這樣完美的造成了。
在此很是嚴重的感謝vim-scripts.org的建立者Scott Bronson,和Vundle的做者gmarik。他們的創新和分享精神,讓這個世界又美好了一些。
也感謝業界良心Github。Vim-Scripts.org整站就是用Github Pages創建維護的,對於我的來講,這是很好的選擇,有興趣的同窗能夠參看我以前的博客:使用Github Pages建獨立博客。
有了Vundle,再裝插件就是件享受的事情了。我經常使用的插件有:
Bundle 'ctrlp.vim' Bundle 'AutoClose' Bundle 'ZenCoding.vim' Bundle 'matchit.zip' Bundle 'ShowTrailingWhitespace' Bundle '_jsbeautify' Bundle 'EasyMotion' Bundle 'FencView.vim' Bundle 'The-NERD-tree' Bundle 'The-NERD-Commenter' Bundle 'snipMate'
以上插件均可以在vim-script.org找到源碼和詳細的使用文檔,簡單說明下:
這是我認爲VIM最不能缺乏的插件,在VIM的編輯窗口樹狀顯示文件目錄,沒什麼好多說的,必需品。
相比於Command-T之類的查找文件的插件,ctrlp.vim最大的好處在於,無需安裝其餘的包,只要他本身,就能夠很好的工做了,恩,就是須要這樣乾淨利落的解決問題。
ZenCoding是一個神級的插件,用他可讓你一種神奇而無比爽快的感受寫HTML、CSS,官網上有動畫演示,你必定會心動的。
最近看到別人介紹,開始使用的一個插件,用全新的方式在文檔中高效的移動光標,和ZenCoding同樣,屬於革命性的方便好用,這裏有教程,你必定也會心動的。
又一個解放生產力的神奇,簡單配置,就能夠按照本身的風格快速輸入大段代碼。
貼一下個人vimrc配置,註釋都有,僅供參考:
"必須的設置: filetype off filetype plugin indent on "打開高亮 syntax enable "不要兼容vi set nocompatible "使用color solarized set background=dark colorscheme solarized "terminal下面的背景問題 let g:solarized_termtrans=1 let g:solarized_termcolors=256 let g:solarized_contrast="high" let g:solarized_visibility="high" set modelines=0 "tab鍵的設定 set tabstop=4 set shiftwidth=4 set softtabstop=4 set expandtab "一些其餘的設定 "字符設置 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5 "set encoding=utf-8 set scrolloff=3 "新建文件編碼 set fenc=utf-8 set autoindent set hidden "設置光標高亮顯示 set cursorline set cursorcolumn set ttyfast set ruler set backspace=indent,eol,start "set laststatus=2 "相對行號 要想相對行號起做用要放在顯示行號後面 set relativenumber "顯示行號 "set number "無限undo "set undofile "自動換行 set wrap "禁止自動換行 "set nowrap "GUI界面裏的字體,默認有抗鋸齒 set guifont=Inconsolata:h12 "自動載入配置文件不須要重啓 "autocmd! bufwritepost _vimrc source % "將-鏈接符也設置爲單詞 set isk+=- "設置大小寫敏感和聰明感知(小寫全搜,大寫徹底匹配) set ignorecase set smartcase "set gdefault set incsearch set showmatch set hlsearch "加入html標籤配對 "runtime macros/matchit.vim "如下設置用來是vim正確顯示過長的行 "set textwidth=80 "set formatoptions=qrnl "彩色顯示第85行 set colorcolumn=85 "設置256色顯示 set t_Co=256 "行號欄的寬度 set numberwidth=4 "初始窗口的寬度 "set columns=135 "初始窗口的高度 "set lines=50 "初始窗口的位置 "winpos 620 45 "匹配括號的規則,增長針對html的<> "set matchpairs=(:),{:},[:],<:> "讓退格,空格,上下箭頭遇到行首行尾時自動移到下一行(包括insert模式) set whichwrap=b,s,<,>,[,] "插入模式下移動 inoremap <c-j> <down> inoremap <c-k> <up> inoremap <c-l> <right> inoremap <c-h> <left> "=================================================== "leader鍵的功能設置 "修改leader鍵爲逗號 let mapleader="," "esc的映射 imap jj <esc> "屏蔽掉討厭的F1鍵 inoremap <F1> <ESC> nnoremap <F1> <ESC> vnoremap <F1> <ESC> "修改vim的正則表達 nnoremap / /\v vnoremap / /\v "使用tab鍵來代替%進行匹配跳轉 nnoremap <tab> % vnoremap <tab> % "摺疊html標籤 ,fold tag nnoremap <leader>ft vatzf "使用,v來選擇剛剛複製的段落,這樣能夠用來縮進 nnoremap <leader>v v`] "使用,w來垂直分割窗口,這樣能夠同時查看多個文件,若是想水平分割則<c-w>s nnoremap <leader>w <c-w>v<c-w>l nnoremap <leader>wc <c-w>c nnoremap <leader>ww <c-w>w "使用<leader>t來控制Tab的切換 nnoremap <leader>t gt nnoremap <leader>r gT "使用<leader>空格來取消搜索高亮 nnoremap <leader><space> :noh<cr> "html中的js加註釋 取消註釋 nmap <leader>h I//jj nmap <leader>ch ^xx "切換到當前目錄 nmap <leader>q :execute "cd" expand("%:h")<CR> "搜索替換 nmap <leader>s :,s///c "取消粘貼縮進 nmap <leader>p :set paste<CR> nmap <leader>pp :set nopaste<CR> "文件類型切換 nmap <leader>fj :set ft=javascript<CR> nmap <leader>fc :set ft=css<CR> nmap <leader>fx :set ft=xml<CR> nmap <leader>fm :set ft=mako<CR> "設置隱藏gvim的菜單和工具欄 F2切換 set guioptions-=m set guioptions-=T "去除左右兩邊的滾動條 set go-=r set go-=L map <silent> <F2> :if &guioptions =~# 'T' <Bar> \set guioptions-=T <Bar> \set guioptions-=m <bar> \else <Bar> \set guioptions+=T <Bar> \set guioptions+=m <Bar> \endif<CR> "=================================================== "插件的設置 "Indent Guides設置 let g:indent_guides_guide_size=1 set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " let Vundle manage Vundle " required! Bundle 'gmarik/vundle' " vim-scripts repos Bundle 'ctrlp.vim' Bundle 'AutoClose' Bundle 'ZenCoding.vim' Bundle 'matchit.zip' Bundle 'ShowTrailingWhitespace' "jsbeautify的設置 Bundle '_jsbeautify' nnoremap <leader>_ff :call g:Jsbeautify()<CR> "EasyMotion設置 Bundle 'EasyMotion' let g:EasyMotion_leader_key = '<Leader><Leader>' "Fencview的初始設置 Bundle 'FencView.vim' let g:fencview_autodetect=1 "NerdTree的設置 而且相對行號顯示 Bundle 'The-NERD-tree' nmap <leader>nt :NERDTree<cr>:set rnu<cr> let NERDTreeShowBookmarks=1 let NERDTreeShowFiles=1 let NERDTreeShowHidden=1 let NERDTreeIgnore=['\.$','\~$'] let NERDTreeShowLineNumbers=1 let NERDTreeWinPos=1 "對NERD_commenter的設置 Bundle 'The-NERD-Commenter' let NERDShutUp=1 "支持單行和多行的選擇,//格式 map <c-h> ,c<space>
VIM在一開始會以爲很是不習慣,必定要堅持下去,收穫的會更多,不只僅是在裝大俠方面的哦~
關於VIM的使用,這篇博客僅僅介紹了很小的一部分,網絡上還有大量朋友總結的心得,常學常有收穫: