星期六, 8月 22, 2009

Mac OSX Terminal 256 color

這篇基本上是參考 yzlin 的 The Tips of Setting Workstation Environment如果是 linux or FreeBSD ,用這份簡報就很足夠哩!
不想這麼快進入正題,為什麼要用出一個 256 color terminal? 我想很大部分的原因是為了舒適度,原本的 8 色或 16 色的功能大部分像是拿來 mark 說,這個字和其他字不太一樣,至少就我看起來,原本的 8 色或 16 色看起來並不是這麼舒服,而用 256 色的時候(我在 Windows 95 就是用 256 色耶 XD),我們有比較多的選擇可以讓自己的眼睛舒服些,那怕給一個 keyword 標定為藍色,也是有差別的

在 Mac OSX 底下要用 256 color terminal 的話,請愛用 iTerm, iTerm 原生支援 256 color ,但是開下去你會感受不到任何差異 XD,不過在這邊我想說一下,iTerm 的半透明效果不要開,開了會非常的 lag,不知道是 bug 還是程式本身的問題,之後在 .bash_profile 加入

export TERM=xterm-256color
重新登入後,還是看不到任何差異,當你打 ls 的時候,ls color 已經寫死了,通常做到這邊,在 linux 底下已經看的到 ls 不太一樣了 XD,所以我們要測試的是 grep ,這個時候,我們對某個檔案做 grep --color include xxx.c就會看到

terminal 基本設定到這邊完成了
VIM
VIM 原生支援 256 color,所以只要環境支援 256 色,再找到一個 256 色的 color 的 scheme 就可以動工了(推薦 yzlin 寫的 yzlin256.vim) 把抓好的 color scheme 放入 ~/.vim/colors/ 底下,然後在 ~/.vimrc 中設定
set syntax=enable
set t_Co=256
color yzlin256
全數搞定,不過詳細的顏色設定可能還要研究一下,在 VIM 出來的成果大概如同下圖

GNU Screen
2011/09/20: 在這個時間點,已經不用自行編譯 screen,安裝 homebrew-alt 之後再行安裝 screen (輸入 brew install [homebre-alt_dic/duplicate]/screen.rb) 即可。
Mac OSX 有原生編譯好的 screen,不過很可惜的就是 256 color syntax 並沒有開啟,如果原生支援的話,在 ~/.screenrc 中寫入
#terminfo and termcap for nice 256 color terminal
# allow bold colors - necessary for some reason
attrcolor b ".I"
attrcolor i "+b"
# tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm "Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm"
termcapinfo xterm-color "Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm"
不過由於原生不支援,所以我們得去GNU Screen抓回來自己編譯,而編譯的選項為(參考這裡)
./configure --enable-locale --enable-telnet --enable-colors256 --enable-rxvt_osc
然後當編譯雖有一堆警告(因為 Mac OSX 用的是 utmpx.h 而非 utmp.h) 的時候很快就發現了錯誤 XD
pty.c:38:26: error: sys/stropts.h: No such file or directory
這時候開啟這個檔案一看,我們看到的是 ...
/* for solaris 2.1, Unixware (SVR4.2) and possibly others */
#ifdef HAVE_SVR4_PTYS
# include <sys/stropts.h>
#endif
我們用的應該不是 solaris ,所以移掉這幾行,編譯就可以完成了,之後執行我們自行編譯的 screen,我們應該能看到 ..(下圖的測試檔在此可以下載)

到此,iterm, vim, gnu screen 都有 256 色啦 !
如果有常看 man page 的需求,可以將下列設定寫入 ~/.bash_profile 中

# colorful man page
export PAGER="`which less` -s"
export BROWSER="$PAGER"
export LESS_TERMCAP_mb=$'\E[38;5;167m'
export LESS_TERMCAP_md=$'\E[38;5;39m'
export LESS_TERMCAP_me=$'\E[38;5;231m'
export LESS_TERMCAP_se=$'\E[38;5;231m'
export LESS_TERMCAP_so=$'\E[38;5;167m'
export LESS_TERMCAP_ue=$'\E[38;5;231m'
export LESS_TERMCAP_us=$'\E[38;5;167m'
而 man page 就有類似這樣子的效果出現,當然顏色可以自己慢慢調 XD

---
enjoy the environment. XD

勿忘此時

我們不會忘記

星期三, 8月 19, 2009

學習 VIM

其實標題很難下,所以我就隨興下了一個標題 XD。

要學 VIM 其實不難,網路上四處找的到文章,不過我推薦下列簡報,我也不想在此重寫一篇,因為我不會寫的比 c9s 和 yzlin 來的好 :)

c9s 提的移動方法讓我受惠良多,yzlin 學長(他大概不記得我是誰了 XD) 所提及的不光只是 VIM,還有其他相當多實用的技巧與方法,相當值得讓我這種菜鳥學習。

其實說到使用軟體的觀點,最難的一點就是「認定」,我所謂的「認定」就是你覺得它很好用,可以用很久很久,而且有長久的更新支援,並且足以在你工作平台上有著良好運作。對我而言,要認定任何一個軟體或程式語言都是非常困難的,不過我想就我會使用 VIM 的原因來說明。

基本操作
就基本操作而言,VIM 分成三種模式,基本上在 normal mode,能輸入的字元都有功能,也有人因此做了一張對應表,其實從 c9s 的 slide 可以得知,基本上我們可以用方向鍵 + Page Up/Down or 滑鼠滾輪,來移動至相對位置,但是我們可以利用 vim key mapping 來進行更快速的移動。真的能省下多少時間嗎? 其實不知道,但是對於整體操作的順暢度會有很大的提升,簡單來說,就是操作的很爽,這方面,真的會讓人離開不了 VIM XD。

驚人的設定彈性
其實這個部分我還在摸索,如果真的要能夠完整掌握 vim 特性,唯一建議是,跟官方文件直球對絕吧 :) (pdf 版 有 237頁 XD),一般的 text editor 能夠設定的其實有限,但是 vim 的彈性之高,真是讓我嘆為觀止,我真的很佩服設計 VIM 架構的人,光以 syntax color 而論,或許 syntax file 是很多,但是整個 syntax file setting 和 color setting 的組合實在是非常有趣,而且 synatax file 有疊加的概念,C 的 syntax file 寫完了,C++ 可以接著繼續寫,這點就真的超有趣,更不論你可以針對特定檔案做出特別設定,如果願意,把 vim 最佳化成特定 programming language text editor 也不是一件困難的事 XD。

plugin
老實說我不知道 vim 的 plugin 個數多不多(約 2700 個),有好有壞,c9s 和 yzlin 都有推薦,可以試試看,端看自己是用什麼 programming language ,就看情況裝吧 XD。


學習曲線
c9s 在 slide 中坦言 VIM 的學習曲線很高,我同意,但是我想補充的是,使用者是可以訓練的,如果一開始就訓練到某種程度而可以讓他之後做的事更為順利,我認為這樣子的訓練是有必要的,舉個例子來說,用注音輸入法可以打出字來,但是新酷音輸入法就有詞庫可以預先訓練,讓你打字更方便(此舉是程式被訓練),但是也可以學習嘸蝦米輸入法,讓自己輸入中文更為便利,其實那一種方法好,端看自己。VIM 或許在一開始是較難以入手沒有錯,不過我相信過了陣痛期之後,我相信會帶給比大部分的 text editor 有著更美好的體驗。

Text Editor vs. IDE ?
到底要用 text editor 好還是 IDE 好? 其實兩個一起用也不錯,我因為平台跳來跳去的關係,我現在只有用 VIM + Eclipse ,兩者的共通點就是,跨平台,都有 plugin 網站 XD,沒有什麼一定好壞的選擇,可以兩者結合嗎? 當然可以啊,不過我目前還是可以在 command line 底下完成啊,我就懶了,VIM 在編輯方面有所長,但是整個專案在 Eclipse 底下,使用 基本的 Refactoring 真的蠻方便的,VIM 做的到,只是我懶的找方法了 XD,也沒有必要過度神化或操死一個軟體,不同的狀況下用不同的軟體也不錯 XD。

真的要用 VIM 嗎 XD? 其實你還有 emacs,找到認為最適合自己的 text editor 就是一件很開心的事!


---
似乎寫的有點亂...Orz

星期日, 8月 16, 2009

c_snippets.vim/ cpp_snippets.vim 釋出

起初我在 在 Vim 上使用 Slippery Snippet ( Textmate-Like )看到可以藉由輸入少數的字來完成功能,覺得非常的好用,但是抓下來之後,看了其中的 c_snippets.vim 功能還蠻少的 (latex_snippets.vim 更少,只有三行 ...Orz),然後決定自己用苦工來改,所以我在這個檔案做的事,都只是苦工而己... 於是初步完成品如下

c_snippets.vim
cpp_snippets.vim

我會持續維護這個檔案,雖然是很想開一個 git 來做管理比較好,不過我目前還蠻懶的,還有就是,我想把 C++ 特有的語法移到類似 cpp_snippets.vim 這樣子的檔案去,這大概都是我下一步要做的吧,然後可能還要學一下 vim scripts,希望可以幫助到有在使用的人啦 XD

snippetsemu 在 Google Code 上有專案,所以我上傳了,不知道會得到怎麼樣的回應喔 XD


---
大概只有自己在用吧 XD。

出發

今天要出發前往 COSCUP 2009,不過我的 MacBook 沒有電池(送修中),ipod touch 放在學校,管他的,開心就好,打算去買件「你好,世界」(就是 "Hello World") 來穿啦,這句話不僅對 programmer,對 C/C++ 寫程式的人更是特別有感覺,衝啦衝啦 XD


---
昨天明明一點半睡 ...Orz