我是一個Vim初學者,初學者在開始能夠順利操作Vim的時候都會有一點點成就感,當你可以順利移動、順利存檔、順利的讓你用Vim寫的程式會動,應該就可以算是順利操作Vim了。
但是你有沒有覺得,Vim每次都要編輯、存檔、離開、開檔、編輯這樣的Loop很煩,檢視一下整個流程,我們應該可以把離開、開檔這個流程省下來,直接在Vim裡面開起來編輯存檔,再開別的檔再編輯,這樣應該會順很多,有這種想法就對了。我們來看一下Vim的Buffer、Session、Tab吧!
Buffer
Vim的buffer有點玄,有老外說這樣了解他最適合
buffer is an open instance of a file
也就說他是個檔案打開後的實體,但是這樣還是很抽象啊,沒關係繼續看下去,buffer打開以後,他在目前的Vim視窗不一定會被看見,但是你可以迅速的切換過去,同時你每次打開一個檔案,其實就是把一個檔案放在Buffer裡面。
在buffer裡面,如果你當前的檔案修改完以後,沒有存檔想要跳到另外一個buffer,那Vim就會出現警告訊息,這個可以”set hidden”選項來解決,修改成離開vim的時候提示。
1 | # add file into buffer list |
Session
Vim的session可以記住當前的工作狀態,咦,這個和buffer不是有點異曲同工嗎?其實是有一點點像的,但是session可以永久的記錄,session可以把目前的Windows以及Tab都記下來,和buffer不太一樣。
1 | # Make a session in file |
Tab
如果我們以前用Notepad++就會把一個Tab去對應一個File,然後用切換Tab的方式來切換File,在Vim裡面Tab其實可以裝多個File在裡面,一個Tab可以視為一個單一的Vim,有了這個Tab我們可以切換多個Vim的感覺。
有老外用Viewport或是layout來形容一個Tab,這樣是比較貼切的,而Tab之間開的檔案都會進到Buffer list,所以可以透過buffer來共享tab開的所有檔案。
1 | # Open file in new tab |
Conclution
那這幾個東西到底要怎麼運用才會順呢?目前來說,我自己是以buffer為主,記錄session為輔,接下來會增加自動記錄Session目前的狀況,也就是每當有buffer被寫入的時候就強迫將目前的session寫入特定檔案,避免忘記save session。
同時未來若有需要多視窗共同編輯的需求,再考慮來引入Tab和Windows的可能。