shell and GNU ls for win32
這兩天回到 Windows 作業,深感不便,所以臨時找了一些工具讓 Windows 可以更好用一些
Read more »
這兩天回到 Windows 作業,深感不便,所以臨時找了一些工具讓 Windows 可以更好用一些
Read more »
找到一個方便的套件,順便抱怨一下在 debian 遇到的怪異相依性問題 Read more »
其實這篇是要測一下 picasaweb 的 link 用起來怎麼樣 Read more »
最近因為在 cgdb 中處理有 standard input 的程式有點問題 (遇到要輸入的地方就會停住@@)。雖然原始的 gdb 是正常的,但習慣看到 source code 後就不太想回頭一直 list,試著轉移到 emacs 的 gdb-mode 後發現還蠻方便的,所以就試著使用看看。
gdb-mode 整合了大部份 debugger 的功能,透過一個 buffer 來操作 gdb,同時開啟一個 buffer 顯示 source code。雖然 emacs 的指令有很多討厭的 prefix,所幸透過 gud 的處理,大部份 gdb 上的指令與使用習慣都可以直接搬過來,使用上沒什麼太大的困難。就目前提到的部份,跟 cgdb 做的事幾乎一樣,但 gdb-mode 給的更多,幾乎是一個很完整的整合界面了。 Read more »
因為想把影片中的一段配樂抓出來,試了一下將影片中的音樂抽出來的方法… Read more »
昨天把 gimp 2.4.0rc3 裝起來,相較於 Slackware 附的 2.2.17,新版改進的地方頗多,連只是簡單使用幾分鐘都能感受得到。 Read more »
最近在 Debug 程式時總覺得之前弄出來的 output highlighter 不太夠用,雖然可以很方便標出一些關鍵字,但規則一多就得串一大堆,效率不彰。不曉得腦筋怎麼轉的,突然想到 Vim 應該可以好好利用一下… Read more »
裝起 emacs 快一年了,這期間斷斷續續使用,一直只會基本操作。為了習慣操作方式,我甚至連 Visual Studio 的編輯器都改成 emacs-like key-binding,但在 linux console 時大部份時間還是回到熟悉的 vim 環境,其中一個原因就是找不到自動轉換編碼的設定… Read more »
BlenderArt Magazine 是自由的 3D 世界中少見的高品質讀物,每一期都會有一個主題,像是這一期的 Organics,並根據這個主題徵求相關的文章 (可能是建模或打光技巧等等)。偶爾也可以在裡面找到一些有趣的新工具,例如這一期有介紹到 Arbaro 與 Ivy Generator 這兩個跟植物建模有關的軟體,看起來應該可以幫忙省下一點時間。
不過最重要的是它可以免費下載,並附上範例檔,很適合自學者參考。不過雜誌內容並不是針對完全的初學者設計的 (內容不是 step by step 教學),可能還是需要熟悉一下基本操作後比較容易進入狀況。 Read more »
之前一直在想,如果可以在寫 python script 時同時開個視窗測試執行結果,應該會方便很多吧。在 emacs 中可以開個 shell buffer 直接使用,不過 vim 中好像沒有這樣的功能。雖然有 “:sh” 指令可以用,可是會把整個環境直接切換到 shell prompt 底下,沒辦法只出現在某一個 window。到官網找了一下,發現有兩個類似的 script:
vimsh 需要在編譯時加入 python support,雖然功能比較完整,不過在一些環境不太方便,所以後來選了 Bexec。安裝方式相當簡單,因為是 VimBall 的格式,只要用 vim 打開下載的 vba 檔,輸入 “:so %” 就可以了。
使用上相當簡單,因為它主要是根據 shebang 來動作,所以第一行一定要加上執行的程式名。接著在 normal mode 輸入 “\bx” 就會自動建立新的 window,並顯示執行後的輸出,內容修改後只要再輸入一次就可以直接更新。不過在有檔案的情形下,它會執行檔案內容,而不是 buffer 內容,記得存檔後再執行。在 visual mode 的話,會執行 buffer 中被選取的部份,測試部份程式碼時相當方便。
要關掉 output window 的話可以用 “\bc” 或 vim 的 window command 來關。不過我在測試的時候發現只要一關掉 output window,以後再開啟的 output window 都關不掉了。查了一下原始碼看不出個所以然,所以修改了一下,讓它只關掉 window,而不刪除 buffer。另外我也加了一個切換用的函式,所有修改如下:
@@ -404,13 +404,18 @@
” Close/Delete the output window/buffer.
“
function! BexecCloseOut()
- silent! exec “bdelete! “.s:bexec_outbufname
+” silent! exec “bdelete! “.s:bexec_outbufname
+ let l:outBuf = bufwinnr(s:bexec_outbufname)
+ exec l:outBuf . “wincmd w”
+ exec “wincmd c”
endfunction+let s:isRunBufOpen = 0
“
” Wrapper function for visually selected text execution.
“
function! BexecVisual(…) range
+ let s:isRunBufOpen = 1
call <SID>BexecDo([a:firstline, a:lastline])
if g:bexec_rehighlight == 1
” Rehighlight selection
@@ -422,5 +427,22 @@
” Wrapper function for normal buffer execution.
“
function! Bexec(…)
+ let s:isRunBufOpen = 1
call <SID>BexecDo()
endfunction
+
+
+”
+” Toggle output buffer
+”
+
+function! ToggleRunBuf()
+ if s:isRunBufOpen == 0
+ call Bexec()
+ else
+ call BexecCloseOut()
+ let s:isRunBufOpen = 0
+ endif
+endfunction
最後只要在 .vimrc 中加上 key binding 就可以方便使用了:
nmap <silent> <unique> <F7> :call ToggleRunBuf() <CR>
nmap <silent> <unique> <F8> :call Bexec() <CR>
vmap <silent> <unique> <F8> :call BexecVisual() <CR>
除了 shebang 外,也可以根據 file type 來執行對應的 filter,只要修改 bexec.vim 中的 custom filter 定義就可以了。例如針對 html,我就設定了 “w3m -dump” 這個指令,以後就可以直接在 vim 中預覽最後的結果了。當然 txt2tags 文稿也可以,只要把 output 設為 stdout 就好了。比較可惜的是 filter 只能接檔名,不能接受 stdin 的資料,不然就可以串接很多個 filter 了。(是可以改,但很多程式不接受 stdin…想來想去沒找到好一點的改法)
有空再來試試 vim 和 debugger 的整合,在 vim 官網上有找到幾個 script,試用後再來報告。