pretty code

2025年4月10日 星期四

Vim 內建 file tree view - Netrw

最近突然發現 Vim 內建的檔案總管,其實已經很夠用了,只要多設定下面幾個全域變數,臨時要瀏覽檔案還算行。

let g:netrw_keepdir = 0
let g:netrw_banner = 0
let g:netrw_winsize = 30
let g:netrw_browse_split = 3

雖然我可以拿到目前 Netrw 指到的檔案名稱,但不太確定要如何操作 Vim 的視窗還是緩衝區來達到 IDE 的介面?


沒關係,我已經比以前的我還進步了XD

不過還是改不了長久以來使用 UltraEdit 的習慣,即使知道快速鍵的使用,但還是很習慣使用方向鍵、delete、backspace。

目前也還沒養成習慣,不編輯時常保持在 Normal Mode。

2025/04/11 更新

今天終於看懂如何改 netrw 顏色了XD


我們只要知道 netrw 的 define 是什麼或是他 link 到那個。

比如說 netrwDir 是 link 到 Directory,故我可以直接改 Directory。

但是像 netrwExe 是 link 到 PreProc,這跟我 Coding 顏色相衝,故我重新定義一個 MKExe,改將 netrwExe link 到 MKExe 即可。

詳情可以參考 vim/syntax/netrw.vim。

2025/04/12 更新

原來 NERDTree 也還好,重點是速度比 netrw 慢(git bash on Windows)。

今天多加了一個視情況改變 statusline 的檢查,看起來舒服多了。


Vim 果然是編輯器之神!

2025年4月4日 星期五

Python 工匠案例、技巧與開發實戰

雖然我是很想直接用 Tcl 單幹寫出現在要寫的 EDA Flow Tool?

不過考量到之後可能要一起協同合作,還是使用最大公約數的 Python 語言?

個人不是寫 Python 的,於是便看了一本買了很久但還沒看的書,也就是如標題所述的書。

不得不說,只要幾百塊的金額,便可以學到原本沒接觸過的知識實在是很划算。

據我之前理解,要稱得上是 Python 進階使用者,大概要知道下面兩個技巧:

01. 生成式的使用
02. 裝飾器的使用

不過,我到現在一個都沒用過。

個人覺得只要能把程式用不同的函數來清楚表達,這樣就已經屌打很多人了XD

因此,我們需要一個方法來檢查我們的函數是否有達到上列目的,剛好這本書在函數這一章節,介紹了一個 package - radon,它可以給函數一個分數,這樣我們就知道函數是否可以改進?

之前做財委時,為了將新補上的歷史資料填上我 Excel 前面的總表分析 sheet,於是便用 Python 寫了一支程式,當然這支程式還有別的功能就是。

總之,目前程式碼為 469 行,下面是我執行 radon cc -s xxx.py 的結果。


從上面可以看到,我有 5 支函數稍嫌複雜,只拿到 B 的分數,原則上最好都拿到 A 的分數是比較好的。


在這 469 行的程式中,扣掉 main 用了 17 個函數,一個函數平均大概不會超過 50 行,即使這樣,也不能保證我每個函數都能拿到 A 的分數。


其中以 adjust_cell_format 最為明顯,雖然行數只有 23 行,但我這支函數拿到的分數最差。

正常來說,應該比照 columns,將對齊方式也用 list 記錄,這樣就可以少掉 42 行與 45 行的 if statement。

但要說這支函數不好懂嗎?我也不太確定,至少這個程式已經是一年多前寫的,當我需要新增功能時,回過頭來再看一次函數也不會有多大困難就是了。

在不斷的思考與自我對話中,程式設計之道也會越來越清楚吧?我想…