文章目錄
環境配置
“如果你認為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=4set tabstop=4set 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> gtnnoremap <C-h> gTnnoremap <leader>t : tabe<CR>"conf for plugins {{ 外掛程式相關的配置"狀態列的配置 "powerline{set guifont=PowerlineSymbols\ for\ Powerlineset nocompatibleset t_Co=256let 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的外掛程式篇......