2007年12月30日 星期日

使用 gvim 編輯 Blogger Template

之前發現的一個好用的套件, 『It's All Text!』(https://addons.mozilla.org/en-US/firefox/addon/4125)
裝上去之後,只要是 Textarea 的 Field ,就可以點一下用你想用的編輯器編輯文字。

這個好處實在是太大了。因為我就不用再麻煩的複製 template 到 vim 裡頭再複製到 textarea 裡面,並且還可以直接有 syntax support ,甚至我可以把 vim modeline 嵌入 template ,設定 template 專用的 fold。

呃,在 it's all text 內設定 /usr/bin/gvim 為編輯器之後,將以下 fold 的 script 放入 ~/.vimrc :
function! GetBTFold() " Blogger Template Fold
if getline(v:lnum) =~ '\v\<(b:widget|b:includable|b:section|b:skin).{-}(\/)@<!\>'
return 'a1'
elseif getline(v:lnum) =~ '</\v(b:widget|b:includable|b:section|b:skin)\>'
return 's1'
else
return "="
endif
endfunction
然後在 blogger template 最末端加上 ..
<!--
vim:sw=2:ts=2:fdm=expr:foldexpr=GetBTFold():
-->
這樣以 gvim 開啟時就會使用這個 fold script。

真相:



真是乾淨太多了。你可以按下 zr 就會展開一個 level 的 fold。用 za 可以 toggle fold。
『認命』 有時候是一種解脫的方法。

gVim - 加速游標閃爍

gvim 提供可針對游標的設定,其中格式是這樣

模式:設定1-設定2-設定3
blinkwait300 代表停 300 ms 之後才會開始閃爍 , blinkon 90 代表亮 90 ms , blinkoff90 代表暗 90ms。基本上這樣閃爍已經很快了,呃,不過不知為什麼 vim 反應速度好像會因此變慢了一點。

針對各種模式做閃爍速度的設定如下:
set guicursor+=n-v-c:block-cursor-blinkwait300-blinkon90-blinkoff90
set guicursor+=i:block-cursor-blinkwait200-blinkon110-blinkoff110
set guicursor+=v:ver90-cursor-blinkwait200-blinkon150-blinkoff150
看著游標快速閃動還是比較爽。

2007年12月27日 星期四

Vim - Perl Fold

vim 內建之 foldmethod 有 syntax , indent , expr 以及 marker 與 manual ,但 syntax 常會 fold 太多,不然就是想 fold 的卻沒 fold 到。 如果用 indent fold 的位置又不大正確。而 marker 卻會寫入 #{{{ , 以及 #}}} 在程式碼裡面,對不使用 vim 的人來說有可能會很礙眼。 另外使用 manual 又太過繁瑣,一旦把 ~/.vim/view 清除掉,所有的 manual fold 都會不見,而且檔案格式、位置變動,fold 也會不正確。

因此前一陣子便因此針對自己的需求用 expr 來寫了一個 fold 給 perl 用,只 fold 我要用的 sub 以及 template 和 pod 。
Code 如下:
function! GetPerlFold()
if getline(v:lnum) =~ '^\v(sub|template|\=\w+)\s\S+'
return '>1'
elseif getline(v:lnum) =~ '^\v(\};?|\=cut)\s*$'
return '<1'
elseif getline(v:lnum) =~ '^\s*#.*{{{'
return 'a1'
elseif getline(v:lnum) =~ '^\s*#.*}}}'
return 's1'
else
return "="
endif
endfunction
然後只需要在 .vimrc 內針對 perl 檔呼叫這段設定即可:
autocmd  Filetype perl :call PERL_RC()

function! PERL_RC
setlocal foldmethod=expr
setlocal foldexpr=GetPerlFold()
endfunction
上述的作法唯一的缺點是,如果 } 號沒有正確的 indent ,sub 或 template 內的 } 號被放在行頭的話,fold 就會錯誤,上述情況比較容易出現在 HereDocument 的格式內。

另外,如果覺得 Folded Text 不好看,也可以加上我這段處理 Fold Text 的 Function:
function! FoldText()
let line = getline(v:foldstart)
let cms = &commentstring

let cms = substitute( cms , '%s' , '|' , 'g' )
let cms = substitute( cms , '[*<!>]' , '\\\0' , 'g' )
let cms = '\v(' . cms
if cms =~ '|$'
else
let cms .= '|'
endif
let cms .= '\{\{\{\d=)'

" strip commentstring
if line =~ cms
let sub = substitute( line, cms , '', 'g')
" strip prefix
elseif line =~ '^\v(sub|template)\s'
let sub = substitute( line, '^\v(sub|template)\s''?(\w+)''?.*','\1: \2','')
elseif line =~ '^\v\=(\w+)\s'
let sub = substitute( line, '^\v\=(\w+)\s(\w+)','pod: (\1) \2','')
else
let sub = line
endif

" strip space
let sub = substitute( sub, '^\s*' , '', 'g')
let sub = substitute( sub, '\s*$' , '', 'g')

" count line
let num = v:foldend - v:foldstart

" make format line
let fline = printf( "|%3d|- %s " , v:foldend - v:foldstart ,sub )

"return fold
return v:folddashes . v:folddashes . v:folddashes . fline
endfunction
然後在 PERL_RC 內加上以下設定即可:
setlocal foldtext=FoldText()
如果只是想使用 vim 內建的 perl fold 可以加上
let    perl_fold=1
let perl_fold_blocks=1

並且將 fdm (foldmethod) 設為 syntax。

最後還有一個
set foldcolumn=2
這樣會在左邊顯示兩欄 fold,如果螢幕夠大,使用 10 也無妨。

而其他想特別用 marker,或 syntax 的 file,可以使用 vim modeline 的技巧。譬如 .vimrc 就非常適合使用 marker,因為 .vimrc 是個人使用,非共用檔案,此外在 .vimrc 使用 marker fold 隨身攜帶也非常方便。

只要在檔頭加上:
" vim:fdm=marker:
即可。

# 如果 setlocal 無法運作,可將 setlocal 改為 set

2007年12月24日 星期一

New York City / Norah Jones



I can't remember what I planned tomorrow
I can't remember when it's time to go
When I look in the mirror
Tracing lines with a pencil
I remember what came before

I wanted to think there was endless love
Until I saw the light dim in your eyes
In the dead of the night I found out
Sometimes there's love that won't survive

New York City
Such a beautiful disease
New York City
Such a beautiful,
Such a beautiful disease

Laura kept all her disappointments
Locked up in a box behind her closet door
She pulled the blinds and listened to the thunder
With no way out from the family store

We all told her things could get better
When you just say goodbye
I'll lay awake one more night
Caught in a vision I want to deny

And did I mention the note that I found
Taped to my locked front door
It talked about no regrets
As it slipped from my hand to the scuffed tile floor

I rode the train for hours on end
And watched the people pass me by
It could be that it has no end
Just an action junkie's lullaby

New York City

We were full of the stuff that every dream rested
As if floating on a lumpy pillow sky
Caught up in the whole illusion
That dreams never pass us by
Came to a tattoed conclusion
That the big one was knocking on the door
What started as a mass delusion
Would take me far from the place I adore

New York City

[amazon.com]

2007年12月22日 星期六

Sigma 生病了。這幾天得吃止痛藥,過幾天要開刀。

# update
# --------------------------
話說今晚突然有人敲我

Lai: 林neo
Lai: 嚇到我了啦 你怎麼了 要開刀?
c9s: XD 狗狗要開刀...

Lai: 一一 原諒我在第一時間內心出現了 “林阿嬤的咧”
Lai: 氣死我了我好拜持 .... 還立刻問你
c9s: 謝謝關心 XD
Lai: 一一 關心你家的狗

2007年12月19日 星期三

恩所以總共是四道手續

第一道 - 掃地 - 清除大塊髒物
第二道 - 吸塵器 - 吸去大部份灰塵
第三道 - 拖把
第四道 - 抹布 - 把塞不到的角落全部清理乾淨 ..

XD

2007年12月16日 星期日

衣服

今天 Shopping , 把電腦加到 3G Ram 爽,買了幾件衣服,買了幾本書。
噢,我看到 Frank Herbert 寫的 Dune。可惜某個該死的傢伙把第一集買走了,害我在那邊猶豫要買哪本好。
所以買了兩本 Frank Herbert 別的系列的,一本是 Green Brain , 另一本是 The Eyes of Heisenberg ..etc.

前幾天也換了檯燈,噢很有質感的檯燈。

然後某人突然線上敲我
(10:01:27 PM) Alan Lu (盧利雄): 你買什麼新衣服啊? 有感覺要 social?
(10:02:22 PM) c9s: 沒有要 social 阿,就去亂逛買新衣服而已
(10:02:32 PM) c9s: 在家 coding 可以穿,心情好
(10:03:17 PM) Alan Lu (盧利雄): -_________-" 你這樣的心態跟網路上那些美眉有什麼兩樣? 即使不出門,也要打扮的花枝招展,每天拍照片
(10:04:24 PM) c9s: XD , 怎麼會一樣,又沒有要拍照。而且也差太多了,這兩種事情怎麼比阿。
(10:04:48 PM) Alan Lu (盧利雄): 美眉是拍照,你是 coding...
(10:04:41 PM) c9s: 穿新衣服而已阿,心情爽就好了。XD
Anyway , 我還是不懂怎麼會一樣。XDDD

( 根本就是要當兵了總不能還跑去買筆電,所以找了很多藉口花錢 XD )

2007年12月13日 星期四

21 天

剩下不到 3 個禮拜就要去當兵了...
我還有好多想做的事情阿 (吶喊)

爛政府怎麼可以剝奪我學習東西的權力。

2007年12月2日 星期日

30

總覺得離 30 不遠了。
也許眨眼就 30 了吧!

2007年12月1日 星期六

Vim: Color Scheme c9s


之前寫的一個 vim color scheme,給 Terminal 用的,由於沒有設定 gui 的 color 所以不適用於 gvim。

要讓 Gnome-Terminal 搭配 Tango 的配色才會比較好看。c9s.vim

因為不知道要給他什麼名字所以就給他 c9s 了。XD

半天過去了

今天都過了 3/4 才知道今天是禮拜六...

想喝咖啡加鮮奶油但是又顧慮到逆態脂肪酸傷肝。而且研究顯示如果每天食用 5 克,心臟病的發病幾率會增加25%。

那我今天到底做了什麼呢?XD

晚上來喝喝咖啡,來寫寫 vim-get 好了。

公務員怎麼來?

12:38 : c9s@:: 原來廢柴都去考公務員了
12:38 : c9s@:: 難怪臺灣這麼亂..什麼事情都弄不好
16:16 : a2n@:: c9s: 公務員這麼多,基本上覺得那樣的人格特質都沒什麼競爭力

Ubuntu: 取得已安裝套件清單

請參見:HowTo: Create a list of installed packages

把所有已經安裝的套件匯出到清單:
dpkg --get-selections > installed-software

要從清單匯入用:
dpkg --set-selections < installed-software

接著:
dselect

Ubuntu 安裝 Vista ClearType 字型

這是 MS 的 Cleartype font,字型挺細緻的,點這邊 Preview

這是在 Ubuntu Blog 上看到的裝法,但我不是這樣裝的
Installing Vista Fonts in Ubuntu

$ sudo apt-get install cabextract
$ wget http://plasmasturm.org/code/vistafonts-installer/vistafonts-installer -O vista-fonts-installer.sh
$ ~/vista-fonts-installer.sh


我的裝法是,把 *.ttf 解壓縮到 ~/.fonts/ 內。 ( 在 這邊這邊可以找到載點 )
接著更新字型快取即可。

$ sudo fc-cache -fv