linux下vim的配置

來源:互聯網
上載者:User

最近安裝的suse enterprise 10上面,vim還是預設的設定,使用起來很不順手,花了一晚上的時間做了一下配置,從網上差了許多資料,整理一下,為以後做個備份~~

 

vim版本:7.3,suse10預設安裝的版本是6.4有點老,nerdtree不支援,先從vim官網上下載個最新版本,root使用者安裝;


1. vimrc基礎配置:

set nocp

syntax on               "文法高亮"

set nocompatible        "使用vim的鍵盤模式"

set nu                  "設定行號"

set nobackup            "不需要備份"

set confirm             "未儲存或者唯讀時,彈出確認"

set mouse=a             "滑鼠可用"

set selection=exclusive

set selectmode=mouse,key

set showcmd             "顯示未完成命令"

set tabstop=4           "tab為4個空格"

set shiftwidth=4        "行交錯"

set cindent             "c檔案類型自動縮排"

set autoindent          "自動對齊"

set smartindent         "智慧縮排"

set hlsearch            "高亮尋找匹配"

set background=dark     "背景色"

set showmatch           "顯示匹配"

set ruler               "右下角顯示光線標位置"

set fillchars=vert:/ ,stl:/ ,stlnc:/ "被分割的視窗之間顯示空白"

set noerrorbells        "不發出警告聲"


set foldenable

set foldmethod=syntax

nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> "空格控制摺疊"


filetype plugin indent on 

set fileencodings=gbk,utf-8,gb2312,gb18030,cp936

set termencoding=gbk,utf-8,gb2312,gb18030,cp936


2. 樹狀結構

需要NERDTree外掛程式,我這邊下載的是5.8的版本,下載完之後在.vim檔案夾下解壓即可;

在vimrc中添加快速鍵:

nnoremap <F1> :NERDTree <cr>

F1可以顯示分類樹狀結構。(也可以替換為其他的鍵,我比較習慣與F1)


3. 自動補全和ctags設定

我用vim主要是用來寫c和c++代碼,偶爾也會有一些sh指令碼,所以如果有c和c++類型的自動補全,會方便很多。

這裡需要兩個外掛程式,一個是ctags,用來產生tags檔案;一個是omnicppcomplete,自動補全的外掛程式。與NERDTree一樣,直接解壓到.vim檔案夾下。

設定產生tags的快速鍵:

nnoremap <F2> :sil !find -maxdepth 1 -name '*.[ch]' -print0 -o

/ -name '*.cpp' -print0 /| xargs -0 ctags --c++-kinds=+p --fields=+iaS --extra=+q <cr>

nnoremap <F3> :sil !find -maxdepth 1 -name '*.[ch]' -print0 -o

/ -name '*.h' -print0 /| xargs -0 ctags --c++-kinds=+p --fields=+iaS --extra=+q <cr>


分別設定F2和F3為產生C++ tags的快速鍵,有了tag檔案,在編輯檔案的時候,直接ctrl+n,ctrl+p就可以自動補全了。 

如何在多個檔案(一個工程中)做到自動補全,這個還沒有研究過,有知道的朋友可以指導下?


4. 自動組建檔案頭

主要就是一些日期,作者等描述資訊,自己寫一個模版放到.vim檔案夾下,假設叫做skeleton,在vimrc中編輯下面的命令:


"預組建檔案頭"

fun! LoadSkeleton()

    let file = $HOME . "/.vim/skeleton"

    if filereadable(file)

        exe "0read " . file

     exe "normal! G"

    endif

    exe "call CreateTime()"

    exe "normal! G"

endfun


 "產生時間"

fun! CreateTime()

         if line("$") > 20

                let l = 20

         else

                 let l = line("$")

         endif

         exe "1," . l . "s/date: .*/date:    " . strftime("%Y %b %d %X") . "/e"

endfun


"設定預先載入檔案頭的檔案類型"

au BufNewFile *.c call LoadSkeleton()

au BufNewFile *.h call LoadSkeleton()

au BufNewFile *.cpp call LoadSkeleton()

au BufNewFile *.sh call LoadSkeleton()


我這邊skeleton的格式如下:

/************************************************

*

  * author:      ####

  * date:        2011 Mar 19 00:57:10 AM

  * mail:        ####

  * version:     1.0.0.0

  * function:    

  *   

  * **********************************************/

一個很簡單的頭,vimrc中替換了時間,並對於.c,.cpp,.h,.sh結尾的檔案自動載入這個頭;

5. 關於摺疊

如下設定,可以用空格鍵直接控制摺疊

set foldenable 

set foldmethod=syntax 

nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo') <CR> 

基本上vim就配置ok了,用起來也比較順手,寬屏下vsp加tree看起來確實很舒服,hiahia。

我的vim設定檔上傳到了資源裡面,nerdtree,ctags和omnicppcomplete都已經在裡面(vim版本7.3)。地址是http://download.csdn.net/source/3107162

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.