環境配置
“如果你認為Vim只是一個文本編輯器,你就輸了”——來自Vim老鳥
Vim以簡潔的方式提供了豐富的配置功能,主要配置體系由一個文件和文件夾組成。在一台安裝了Vim的OS X/Linux/Unix機器上,進入用戶主目錄,可以找到.vimrc文件和.vim文件夾,這就是Vim所有的配置信息。
(1).vimrc介紹
用戶目錄下的.vimrc文件就是Vim針對當前用戶的主配置文件,該文件不是必備的,沒有的話就創建它。文件位於當前用戶的主目錄下,可以用~/.vimrc找到,Vim啟動時會自動運行文件中的每條命令。
通過.vimrc我們可以為Vim進行個性化配置,包括使用方式、顯示風格、編寫函數和運行插件等,.vimrc中所有的命令都可以在Vim運行時通過類似:comm args[=args1]的方式動態運行,即時生效。
以下是一個.vimrc的樣例腳本,包含了一些常用配置,后面的注釋是簡要說明。
.vimrc的注釋用雙引號(")表示 ,樣例中的大括號僅表示功能區,屬於注釋的一部分,無其他含義
.vimrc的配置非常豐富,可以定義各種宏、函數、插件和映射,我見過最長的.vimrc配置有1000多行,這里的示例比較簡單,適合入門級用戶
syn on "語法支持 "common conf {{ 通用配置 set ai "自動縮進 set bs=2 "在insert模式下用退格鍵刪除 set showmatch "代碼匹配 set laststatus=2 "總是顯示狀態行 set expandtab "以下三個配置配合使用,設置tab和縮進空格數 set shiftwidth=4 set tabstop=4 set cursorline "為光標所在行加下划線 set number "顯示行號 set autoread "文件在Vim之外修改過,自動重新讀入 set ignorecase "檢索時忽略大小寫 set fileencodings=uft-8,gbk "使用utf-8或gbk打開文件 set hls "檢索時高亮顯示匹配項 set helplang=cn "幫助系統設置為中文 set foldmethod=syntax "代碼折疊 "}} "conf for tabs, 為標簽頁進行的配置,通過ctrl h/l切換標簽等 let mapleader = ',' nnoremap <C-l> gt nnoremap <C-h> gT nnoremap <leader>t : tabe<CR> "conf for plugins {{ 插件相關的配置 "狀態欄的配置 "powerline{ set guifont=PowerlineSymbols\ for\ Powerline set nocompatible set t_Co=256 let g:Powerline_symbols = 'fancy' "} "pathogen是Vim用來管理插件的插件 "pathogen{ call pathogen#infect() "} "}}
(2).vim文件夾
.vim是Vim的主配置文件夾,位於當前用戶的主目錄下,可以用cd ~/.vim進入。該文件夾一般用來放置插件和相關的幫助文檔,常用的目錄結構包括:
doc //幫助文檔目錄
autoload //Vim啟動時自動加載的插件目錄
plugin //插件目錄,一般在使用Vim時通過命令呼出
當然,如果你已經安裝了足夠多插件,那么這個目錄下就會變得五花八門,syntax、snippets、indent等文件夾都會冒出來了。一個插件所包含的文件往往會分布在多個文件夾下,管理起來比較麻煩,稍后我們會介紹一個管理插件的插件,讓這個目錄變得干凈整潔,容易管理,這個插件的名字叫pathogen!
在Vim中輸入命令:help,即可進入幫助頁面,默認是英文幫助,如果你喜歡看中文,可以通過以下方式安裝中文幫助內容:
- 下載中文幫助的文件壓縮包
- 解壓,把doc目錄下的文件復制到~/.vim/doc下
- 確認在.vimrc中設置了
set helplang=cn - 輸入命令
:help即可進入中文幫助
基本概念
下面我們來介紹一下Vim中的幾個基本概念:Buffer、Window和Tab-page。
- Buffer:使用Vim打開的文件都會被加載到內存中,在內存中我們使用Buffer來描述被編輯的文件,一個Buffer對應一個被編輯的文件副本。當我們在完成了一個Buffer的編輯后就可以保存該文件。Buffer不僅包含了文件的內容,也記錄了該文件的編輯狀態等配置信息,比如激活、隱藏、上次編輯行數等,具體可以查閱幫助文檔。
用Vim可以打開多個文件同時編輯,也可以把不需要的文件關掉,但這時文件副本依然保存在緩沖區中,我們可以通過:ls或:buffers查看這些Buffer,還可以通過類似:buffer n的方式重新打開文件(n表示Buffer的序號)。當然,我們有更好的方式來處理這些Buffer,那就是CommandTBuffer,要想使用CommandTBuffer,先要安裝CommandT插件,請大家記住這個插件的名字,稍后介紹。 - Window:是對應Buffer的一個展示窗口。一個Buffer可以對應多個窗口,比如我們可以通過
:split filename或:vsplit filename命令在多個窗口打開一個文件,當修改某一個窗口的文件是,其他窗口都會同步更新。當然我們也可以在多個窗口打開多個文件,編輯后用:wq保存退出,但是記住,只要沒有最終退出Vim進程,那么這些打開的文件Buffer依然保存在緩存區中,可以隨時再次打開。 - Tab-page:Tab-page就比較容易理解,對應一組窗口,我們可以通過`:tabedit filename`在另一個標簽頁中打開一個文件,在這個標簽頁中又可以打開多個窗口。
下圖可以清晰的表達Buffer、Window和Tab-page的關系:

理解了這三個概念和三者之間的關系,對我們用好Vim有非常大的幫助。
待續,下一篇是Vim的插件篇......
