最近開始從純文字的vim轉移到有GUI的MacVim,才發現我已經用了15年的vim設定檔不知不覺變得又亂又肥。有一大堆plugin都是放進去就忘記了,或是當初為了解決vim 5.x或6.x的問題,到了vim7後都變成多餘的垃圾。vim這種歷久彌新的編輯器,特點就是客製化功能特別強,每個人都有不同的快速鍵設定或偏好的plugin,但用了十幾年後,我發現真正重要和常用的功能還是那些基本的編輯功能:輸入、移動、複製、剪下、貼上、搜尋、視窗/檔案/分頁切換。(也就是我在給程式設計師的Vim入門圖解說明中畫的那些)其他很多看似很酷的plugin,常常一開始看到覺得很有趣,但裝進去因為很少會用到,時間久了也就忘記它的存在。
因此,我決定趁這個機會重新整理我的vim設定檔,從一個完全空白的設定一行一行把我原本有用的設定加進去並寫註解,並只留下我真正常用,不需要記特殊快速鍵的plugin。本來以為現在還用vim的人不多,但在我的Facebook和Plurk上做了個簡單的調查後,沒想到用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(螢幕底部)衝突,有需要用這兩個鍵的請自行修改。
想請您用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 . 時就會不小心把這些也加進去….
可以請教一下上圖你macvim中使用的是哪一套字型,我覺得還滿好看的,是MAC特有的嗎?謝謝您!
圖裡的是Monaco 16, 是Mac上才有的。但我知道也有人拿去裝在其他平台 :p
我在 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就行了
谢谢分享,学会很多东西!
另外:
nmap p :call TogglePaste()
function! TogglePaste()
if &paste
set nopaste
else
set paste
endif
endfunction
“}
可以改为
nmap p :set paste!set paste?
比较简洁一点
nmap p :set paste!set paste?
nmap [leader]p :set paste![bar]set paste?[CR]
尖括号都不见了,用方括号代替
原來可以這樣寫 感謝提供這個tip!
:set togglepaste=p
vim 内建功能
打错了……尖括号显示不出来啊
应该是
:set pastetoggle=[leader]p
NERD Commenter
http://www.vim.org/scripts/script.php?script_id=1218
多行註解/反註解
這個應該蠻常用的
另外,Ctrl+j會讓視窗變成最大
有方法在變回來嗎?
感謝推薦, NERD Commenter看來不錯。
我不確定你說的「變回來」是什麼意思,你可以用ctrl-w =讓分割窗均分,或是ctrl-w +或-調整視窗大小。
再补充个切换 paste 的方法:
nmap someShortCutKey :set invpaste
See :help :set-inv
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關掉,應該就會變細了。
Pingback: 使用github管理vim配置文件与插件 - Teddy's
Hey, Chang.
Check out this article.
http://soledadpenades.com/2011/07/03/244-days-with-vim-2-days-with-gvim-introducing-dotvim/
Author Penades mentioned about your setting. That’s why I found you. Ha…
我到現在還在想,到底是要用emacs 還是vim 好? 因我還正處在學習階段。
Anyway, Good luck on your advanced study.
如果是初學的話,不妨都用看看,再從順手的開始練習就好。
想請問您在做submodule時的步驟是這樣嗎?
git submodule add https://test bundle/test
git submodule init
這樣嗎??
我也用pathogen+submodule去做
可以每次都看到某些submodule會有(untracked content)這個訊息
再不知道該怎麼解決@@
hi,vgod。
问个问题
在windows下使用git命令,是不是要先下载git桌面版?
Pingback: 分享 - www 網頁熱搜“分享”
Pingback: blogger seo experiment
ruby1.8 and ruby1.8-dev is needed to compile command-T in a newly installed Ubuntu 10.04
Pingback: Neopets
Pingback: fake louis vuitton coin pouch
Pingback: vim pattern http blog vgod tw 2011 03… | nota