Thu 27 Dec 2007
今天又遇到一個問題,像有時候會看到像這樣的字「忽然」這樣的東西。我們雖然心裡面知道這可能代表兩個字,但是卻還是不知道那到底是什麼。以前我的方法就是丟進網頁裡面去,今天護教說「沒救了,就用 vi 吧」,讓我想到,對呀,說不定 vim 可以解這個問題喔!
(more…)
Thu 27 Dec 2007
今天又遇到一個問題,像有時候會看到像這樣的字「忽然」這樣的東西。我們雖然心裡面知道這可能代表兩個字,但是卻還是不知道那到底是什麼。以前我的方法就是丟進網頁裡面去,今天護教說「沒救了,就用 vi 吧」,讓我想到,對呀,說不定 vim 可以解這個問題喔!
(more…)
Fri 21 Dec 2007
當使用 vim 一段時間後,你可能會和我有一樣的想法:最好所有的事情都在 vim 裡面完成。但如果只憑藉前面我們討論過的那些指令或者是設定,還是不夠的。所以今天我們來稍微談一下 vim 的 script,也就是,用 vim 內建的「程式語言」來寫點小程式。
(more…)
Mon 16 Apr 2007
以前有人問過我,有沒有什麼方法可以在程式的每一行前面補上所在的行數?我的答案是:
(more…)
Tue 6 Feb 2007
慣於使用所見即所得,或者說喜歡用滑鼠的朋友們,對於 vim 這種好像只能憑藉鍵盤的方式很不習慣。我們可能會說 vim 是不錯,可是不能滑鼠選擇一塊區域,然後按一個鍵,或是一個地方,就可以完成某些事情。比方說有一些軟體可以讓你在編寫網頁的時候,你可以用滑鼠把文字區塊選起來,然後點一個小圖示或是用滑鼠點擊選單就做到把那個區域的前後補上<small>…</small>這樣的標籤。雖然 vim 有這麼多強大的功能,有取代、置換、幫你幹嘛幹嘛的,… 難道,就是這樣了嗎? vim 真的不行了嗎? (more…)
Wed 21 Sep 2005
前面我們談了很多有關 vim 的指令,不管是取代、置換、刪除或是搬移等等,這些指令都是讓我們在編輯時比較輕鬆的方法。但是 vim 的編輯當中,有的為了看起來比較舒服,像是對於不同的關鍵字或是程式等等,提供了不同顏色的標明,像是我們之前已經看過的樣子: (more…)
Mon 12 Sep 2005
Sat 10 Sep 2005
我們在講到 vim 的取代置換功能 :s 的時候,內文提到了一個 <Ctrl+R>然後按 / 就可以叫出用 / 作搜尋時所打的字串。這種呼叫出之前打過的字的方式,就是本次的主角 register。
按照 vim help 上面的說明,vim 提供的 registers(暫存器)有下列幾種:
雖然看上去有九種之多,但經常會用的並不多。
(more…)
Sat 10 Sep 2005
在這個系列的開始沒多久,我們就先談了 vim 有一個選擇模式,可以透過 大小寫的 V 或是 <Ctrl+V>來作選擇,因應這三種方式的不同而有不同的行為。
選擇反白區域可以 vim 使用游標移動的方法:
在談命令模式下的刪除行為時,我們提到可以選擇要刪除的區域。如果你使用的是小寫「v」,那配合 vim 的游標移動,你可以作更複雜的選取方式。甚至你可以進入選取模式後使用「 / 」和「n」的組合更快速選到你想到的區域去。
從之前對選擇模式的粗略介紹,你大概依稀還記得這三個的差異,不過你可能會問:我選了這塊區域能做什麼?
(more…)
Thu 8 Sep 2005
Thu 8 Sep 2005
Fri 2 Sep 2005
在前面我們所談的那些可以說是比較基本的東西,但是對於一份文件來說,光有前面所介紹的游標移動、刪除等等功能是不足夠的。面對一份文件我們通常會因為某些緣故而使得我們必須去修改當中固定出現的字串樣式(pattern)成我們想要的樣子。最常遇到的就像中文文件的標點符號問題,或是 un*ix 和 DOS 文件格式之間轉換常會有個 ^M 結尾會讓人覺得很討厭,又或是我們想要把一份 HTML 格式的文件去除掉它的 HTML tag。
對於這些事情來說,拿中文標點符號置換這個很多編輯器都做得到,簡單地說如果想更動的 pattern 是一個固定的字串,那對於一般編輯器來說都不會太困難,但是對於具有固定格式,但字串內容卻不一定的該怎麼辦?就像要去掉 HTML 格式中的所有 HTML tag?這就是 vim 開始大顯身手的地方了。
(more…)
Sun 28 Aug 2005
在vim裡面除了我們在講刪除時所講的那些以外,事實上還有很多都是跟游標移動有關的指令。不過今天我們講的內容和 ctags 這個小傢伙比較有關。
簡單地說, ctags 主要是用來幫助程式寫作用的。怎麼說呢?如果你現在正在接手一套大程式,但事實上你需要維護的只是這大程式裡的某一條執行程序,你當然不會想說我要把這整個程式都看懂才要來做維護的工作,等到你看懂可能公司也準備請你走路了。所以這個時候 ctags 就可能幫上你的忙。它會把程式中函數(function)以及變數(variable)的定義區紀錄下來。比方說你現在看到目前在追的執行程序中呼叫了一個 line_extraction_algo(…) ,如果你想知道這個函數在幹什麼你會怎麼做?以前也許你就會用 grep 或是搜尋字串的方式看看這個東西在哪個檔案裡面,說不定還要一個個看到底哪個才是定義的地方。現在在 windows 或是一些整合性環境(IDE)大概都會提供在上面按兩下之後就會跳到函數或是變數的宣告區裡面。但是現有的IDE環境大概都沒有提供像 vim 那樣有很多好用的功能,這些等我們講到取代的時候大家就會逐漸發現 vim 的好。
(more…)