分享我的vim設定檔

最近開始從純文字的vim轉移到有GUI的MacVim,才發現我已經用了15年的vim設定檔不知不覺變得又亂又肥。有一大堆plugin都是放進去就忘記了,或是當初為了解決vim 5.x或6.x的問題,到了vim7後都變成多餘的垃圾。vim這種歷久彌新的編輯器,特點就是客製化功能特別強,每個人都有不同的快速鍵設定或偏好的plugin,但用了十幾年後,我發現真正重要和常用的功能還是那些基本的編輯功能:輸入、移動、複製、剪下、貼上、搜尋、視窗/檔案/分頁切換。(也就是我在給程式設計師的Vim入門圖解說明中畫的那些)其他很多看似很酷的plugin,常常一開始看到覺得很有趣,但裝進去因為很少會用到,時間久了也就忘記它的存在。

因此,我決定趁這個機會重新整理我的vim設定檔,從一個完全空白的設定一行一行把我原本有用的設定加進去並寫註解,並只留下我真正常用,不需要記特殊快速鍵的plugin。本來以為現在還用vim的人不多,但在我的FacebookPlurk上做了個簡單的調查後,沒想到用vim的人還真不少。(當然也有很多是受我影響才開始用vim的XD)於是我也想趁這個機會把我的設定檔分享出來,有興趣的人可以自由拿去參考或改寫成適合自己習慣的設定。

我把我的vimrc放在github上,安裝方法也寫在README裡了。

經過了重新整理,現在我的vim plugin都是透過pathogen.vim來統一管理。每個plugin都可以獨立安裝在~/.vim/bundle下,而不用散佈像以前一樣散佈在~/.vim/{plugin,doc,ftplugin}等等的眾多目錄下。在這種新架構下,要升級或刪除plugin都變得很容易,因為所有跟該plugin相關的檔案都只在同一個目錄下。利用這個特點,我也把plugin都裝成git submodule來管理,這樣日後plugin有新版本推出時,只要一個git pull就能升級完畢。具體利用pathogen和git來管理vim plugin的方式可以參考這篇文章:Synchronizing plugins with git submodules and pathogen

這個vimrc會隨著我的使用持續更新,歡迎大家自由使用或是fork出自己的版本,也歡迎建議好用的plugin。

以下列出一些重要的自訂快速鍵:

分割視窗(splits)
Ctrl-j
跳到下面的分割窗並放到最大
Ctrl-k
跳到上面的分割窗並放到最大
Ctrl-h
跳到左邊的分割窗並放到最大
Ctrl-l
跳到右邊的分割窗並放到最大
分頁(tabs)
Ctrl-t Ctrl-t
開新分頁
Ctrl-t Ctrl-w
關閉分頁
H
前一個分頁*
L
下一個分頁*
一般設定
,/
關閉高亮搜尋標記
,p
切換貼上模式 (paste mode)
:cd.
切換目錄至目前檔案所在處
搜尋/取代
Cmd-t或,t
搜尋/跳到任意檔案
,r
在所有開啟檔案中取代目前的word

*註:和vim原本的按鍵H(螢幕頂端), L(螢幕底部)衝突,有需要用這兩個鍵的請自行修改。

29 thoughts on “分享我的vim設定檔

  1. 想請您用git submodule管理bundle的plugins,遇到plugin在submodule底下自動產生的檔案(例如doc/tag),您都怎麼處理?
    我的意思是submodule的repo應該是它原先的repo,您的修改會先commit(在plugin目錄)但是不能push不是嗎?否則就會push到原repo對吧?
    還是是可以用exclude的方式?

    • 自動產生的檔案不需要進version control,所以就讓他留在local就行了。
      如果是需要對submodule做修改,就得fork出來,或是用script在local端修改。(像我的install-vimrc.sh裡有自動link xmledit的檔案,讓它能支援html..)

    • 我是把 doc/tag 加進 submodule 的 .git/info/exclude 裡,不然很豪邁的 git add . 時就會不小心把這些也加進去….

  2. 可以請教一下上圖你macvim中使用的是哪一套字型,我覺得還滿好看的,是MAC特有的嗎?謝謝您!

  3. 我在 git submodule update –init 之後出現錯誤

    fatal: reference is not a tree: 65a9fad57661eb14959e07dcd587e83efedcdbdb
    Unable to checkout ’65a9fad57661eb14959e07dcd587e83efedcdbdb’ in submodule path ‘bundle/xmledit’

    請問這是 local 的錯誤還是 project 呢? 謝謝.

    • 這是我的錯誤, 不小心把我對xmledit做的修改commit進去了, 不好意思:p
      已經修好了, 請git pull更新一下再重新git submodule update –init就行了

  4. 谢谢分享,学会很多东西!
    另外:
    nmap p :call TogglePaste()
    function! TogglePaste()
    if &paste
    set nopaste
    else
    set paste
    endif
    endfunction
    “}
    可以改为
    nmap p :set paste!set paste?
    比较简洁一点

    • 感謝推薦, NERD Commenter看來不錯。

      我不確定你說的「變回來」是什麼意思,你可以用ctrl-w =讓分割窗均分,或是ctrl-w +或-調整視窗大小。

  5. Hi,想问一下你这个macvim的screenshot是在leopard还是在snow leopard下截的呢?因为感觉图中macvim的字体比我使用的monaco:h16要细不少,希望知道如何变细的?

    font smoothing我已经设成“轻”了。我是使用10.6.7的macvim snapshot 57。谢谢!

    • 這是在snow leopard下的。
      試試到System Preferences裡的Appearance,把Use LCD font smoothing when available關掉,應該就會變細了。

  6. Pingback: 使用github管理vim配置文件与插件 - Teddy's

  7. 想請問您在做submodule時的步驟是這樣嗎?
    git submodule add https://test bundle/test
    git submodule init
    這樣嗎??

    我也用pathogen+submodule去做

    可以每次都看到某些submodule會有(untracked content)這個訊息
    再不知道該怎麼解決@@

  8. Pingback: 分享 - www 網頁熱搜“分享”

  9. Pingback: blogger seo experiment

  10. Pingback: Neopets

  11. Pingback: fake louis vuitton coin pouch

  12. Pingback: vim pattern http blog vgod tw 2011 03… | nota

Leave a Reply to perfectworks Cancel reply

Your email address will not be published. Required fields are marked *

*