pretty code

2025年4月16日 星期三

Vim 最後一哩路

陸續搞定了 netrw 的一些功能,寫了幾個函數來幫忙,終於對 Vim script 有點感覺了。


雖然回復 cursor 的方法還有點鳥,但目前找不到適合的 event 來監聽,只好勉強先用 Vimresized 頂著先,壞處就是要一個 count 來計算何時該清空變數。


總之,開啟檔案到右邊視窗會觸發第一次,關閉右邊視窗又會觸發第二次,所以當 count == 2 時,我才能放心清空此變數。

現在大概只差寫 Plugin 的經驗了XD

2025/04/17 更新


早上又多檢查了 winnr 的個數,避免開到第三個 Window 後,汙染了原本的 s:MK_sv 變數。

另外,Vimresized 之所以能成功的原因是因為當開了右邊的分割視窗後,此時原本的視窗左邊會長出 scrollbar,故才會有此 Event 的發生。

如果我們去調整 guioption,讓它永遠為空,Vimresized Event 就不再發生了,故我原本的 patch 就不起作用了。

2025/04/18 更新

原來也可以設定 g:netrw_fastbrowse = 2,這樣就不會每次重新抓取目錄列表而導致游標跑掉(離開原本開啟檔案那列),但第一次因為 Buffer 沒有東西,故還是會重刷。

用這個的好處是我可以設定 set guioptions-=L,強制左邊不會有 scrollbar,看起來比較好看。

如果用我原來的 BackToNetrwWindow,則是不能設定沒有左邊 scollbar,不然 Vimresized Event 會失效。

真是有一好沒兩好。

沒有留言: