給程式設計師的Vim入門圖解說明

12-09 Update: The English version of Vim Visual Cheat Sheet is also available.PNG,PDF)(更新: 在圖內加入基本指令表和說明以及PDF版,方便大家列印出來貼在牆上隨時查看。)剛在寫那篇關於vi和文字編輯器的文章時,本來想附上一個vim的超簡單入門連結,但找了一下都沒有很滿意的,所以決定自己動手先來畫個入門用的說明圖。vim-cheat-sheet-fullPDF版下載vim-cheat-sheet-diagram這個圖把vim中基本的移動方法都畫上去了,為...阅读全文

Vim的多行編輯

之前看TextMate的Demo影片,發現TextMate能同時對多行做修改(例如,在連續十行的開頭結尾都加上<li>和</li> tag),就一直在想vim能不能做到這樣。一直以來我在vim中都是用V把要修改的範圍選出來,再用s///搭配regular experssion做取代。這方法彈性很高,但大多時候是殺雞用牛刀,太麻煩了。還好剛發現一個vim tip裡寫到一個簡便的新方法。簡單來說,用ctrl-v做blockwise的visual selection時,按下大寫I,就能對所選範圍同時插入一樣的文字;而按大寫A,則是在所選範圍後同時append同樣的文字。阅读全文

在TextMate中使用Vi的按鍵配置

之前寫過一篇介紹Vim snippetsEmu文章有提到TextMate雖然很好,但如果不能支援vi的按鍵配置方式(key binding),像我這種依賴vim為生的人就不可能跳槽過去。沒想到當初隨便說說的怨念,還真的有人把它做出來了。這東西叫ViMate(這名字真不錯),是一個TextMate plugin。下載回來點兩下就會自己裝到TextMate裡。打開TextMate後,外觀看不出有什麼不同,但很快就發現還要按一下i才能開始打字,按ESC游標會變成綠色代表進入command mode...。雖然這個plugin還在開發中,不是所有vi命令都支援,但也提供vi fans一個想玩TextMate的好機會啦。阅读全文

Vim + Visual Studio .NET on Windows

像我這種用習慣vim的人,不論用甚麼其他的編輯器都會渾身不對勁,更別提還要拿來寫程式。因此我排斥Visual Studio已經不是一天兩天的事了,但這學期修了個Game Programming,很不幸的它提供的Game Engine只能在Windows下跑...這讓我不想用Visual Studio也不行了 :((呃,我知道MinGW啦,但我並不想花太多力氣搞MingGW+DirectX+Game Engine的相容問題...)所以呢,我得在Windows上裝vim,然後讓我能在vim中compile & test程式。以前的Visual Studio可以用一個叫VisVim的plugin,但VS .NET後就不能用了。另外,以前還能export makefile出來,現在似乎也不行了...!#*(!#&!&%@$研究了半天,發現我得透過"Microsoft Visual Studio .NET 2003/Common7/IDE/DevEnv.com"這個程式,才能在command line底下build program。底下是給vim的設定,我把這個設定加在vim的session file中,這樣之後再開project就不用一直重設,而這個設定也不會干擾到其它檔案了。set makeprg=devenv.com /Build Debug xxx.slnset errorformat= %#%f(%l) : %#%t%[A-z]%# %m(xxx.sln請自行換成你的.sln檔。DevEnv.com的PATH也要先設好。)這樣就能在vim下用:make來build程式,並且vim也能parse錯誤訊息並自動跳到對應的那一行了。只是有一點我還搞不定,devenv的help說用/LCID能設定它的locale,但我怎麼設都沒用,跑出來的訊息一直都是中文的,這讓我在UTF-8 term下面老是看到一堆亂碼..。阅读全文

TextMate, snippetsEmu for Vim

在Mac OS X上有一個傳說中的text editorTextMate,它因為在Ruby On Rails demo上頻頻曝光,於是突然爆紅起來,甚至傳出有人為了這個editor而買了Mac的消息。我在第一次看到那個rails demo時,也注意到了presentor用的editor似乎非常神奇,不但能打幾個字就生出"整塊" code block template,而且還能非常流暢的把template填完。後來去查了一下,才發現原來這個editor叫TextMate,而那個神奇的auto-complete功能叫做snippet。TextMate雖然真的很好用,但目前還有個致命缺點:它竟然不能正確處理中文!!更精確的說,它會把中文字的寬度當成一般ascii字元的寬度來看,所以打中文上去就會發現字都疊在一起了。除此之外,OpenVanilla的選字窗在上面也是完全看不見的。因為如此,我還是只能繼續用我的Vim。(其實,即使TextMate的中文沒問題,我應該也還是換不過去吧,除非它支援Vi的key binding....) 雖然TextMate不太合用,但我還是對snippet念念不忘。剛用Google查了一下,發現跟我有同樣怨念的人還真不少,而且早就有人寫了Vim的snippetsEmu,也就是能讓Vim也有一樣功能的plugin!snippetsEmu的用法還蠻簡單的,把它的.vim抓下來放在.vim/plugin/裡,接著在.vimrc中設定一行let g:snip_set_textmate_cp=1就能開啟TextMate的相容模式,也就是一直按tab就行了。但只有這個東西還不太夠用,目前還缺少各個語言的snippet file,如果有人知道哪裡有蒐集或是有自制的請通知我一聲。我目前已知的snippets有:BTW, Emacs也有類似的plugin,可以參考這篇文章: http://gugod.org/blog/2006/01/emacs-my-snippetel.html阅读全文