你還在用IDE嗎? 使用VIM及CLI工具加速你的開發 — part 1 基本介紹
成為軟體工程師也有一陣子了,工程師的工作每天會盯著螢幕coding,文字編輯器,或者說 IDE(Integrated Development Environment),扮演著每天工作中重要的角色。
我自己的話當然也玩過各式各樣的工具:從一開始的Eclipse、IntelliJ IDEA、VsCode、一直到現在VIM,過程當中不斷地體驗不一樣工具所帶來的優勢,不斷地學習怎麼樣提升coding的效率,也算是小有心得。
# 什麼是VIM?
不知道各位工作的過程中有沒有看過這個畫面?或是不小心跑進這個畫面然後摸索半天不知道怎麼跳出呢? 相信應該是一個難忘的體驗(笑)
VIM和Vscode一樣,是個文字編輯器(text editor),不過和一般的文字編輯器很不一樣的是,他是一個:Modal Editor;一個帶有各種不同模式的文字編輯器。VIM的重點不在創造新的文字,而是編輯已存在的文字(當然VIM在創造新文字這方面也不輸其他編輯器就是了)。
工程師每天的工作,其實有很大一部分的時間花在閱讀程式碼、編輯現有的codebase、優化及重構現有的code等等。真的要寫大量全新的code的機會其實不多。即便開發了新功能,後面依然會花大量的時間不斷的測試、改寫code。一般的編輯器雖然也有很多keybinding(快捷鍵),不過和VIM在編輯文字的功能比起來,還是有些落差的。
在進入VIM之後,你會馬上發現很不一樣的地方:奇怪,不管我敲什麼都沒有反應?因為VIM的預設模式是 “一般模式” (normal mode),而要輸入文字的話則要進入 “插入模式” (insert mode)
然後你會發現:奇怪,怎麼滑鼠完全沒反應?那是因為預設的VIM是不使用滑鼠的(這個可以透過設定去改成可以用滑鼠)。
不知道大家有沒一個經驗:就是在coding的時候,時常要把手移開去使用滑鼠,一番點擊之後再移回鍵盤上敲字?其實這個動作是很耗時的。使用VIM的話就不會有這個問題,因為它不用滑鼠,你的手可以一直保持在鍵盤上。要在codebase裡移動,甚至是切換檔案,可以透過來回的切換模式去實現。
聽到這裡你可能會覺得很麻煩,但實際上完全不會:因為敲鍵盤得速度完全比使滑鼠還快,你甚至可以定義一些屬於你個人常用的快捷鍵。當你熟悉了之後變成一種肌肉記憶,使用滑鼠這個動作反而才是拖累速度的罪魁禍首😂
# 為甚麼要學VIM?
首先,各種Linux系統都會自帶VIM。打開終端機輸入 vim <檔案名稱>
就可以馬上進入該檔案進行編輯。有時候你只是想做個小改動,或者是server不允許下載其他軟體,又或者根本沒有GUI(Graphical User Interface)介面可以使用,只有終端機,這時候VIM就會是一個很好用的工具。
而且你會發現,用 vim
指令開檔案幾乎是瞬間完成,完全不用等。馬上進去,馬上做調整並存檔再離開,這個過程可能不用10秒。用Vscode你可能還要 “稍微等一下下”,用IDE的話就更不用說了,Intellij IDEA可能還好一點,某E開頭的Java IDE,有用過的同學應該都知道。
前面有提到VIM可以定義自己的快捷鍵,我們可以將這些設定放進一叫做.vimrc的檔案。VIM在啟動時會去讀取這裡面的設定,讓你在任何地方的VIM體驗都跟平常一樣不卡頓,能用自己習慣的方式去操作。
而且VIM的快節鍵功能很強大,你甚至可以用自定義的function當作快捷鍵
上面是我個人部分的VIM配置,除了普通的快捷鍵,有些常用的自定義功能,也能被設為快捷鍵。這些功能真的讓我在coding的時候快了不少。
上面這個範例算是我每天工作常會用到的一個功能,就是把資料庫裡的欄位,變成一個Java Bean。有時候欄位很多,有些表的欄位甚至有50~60個,有的還是全大寫帶底線的方式。不過要變成Java Bean要符合Java的命名模式,一個一個改寫也太麻煩。以前我常會寫一些簡單的js或python腳本去做這件事.用完就丟的那種。開始使用VIM之後,就再也沒寫過這種小工具了,VIM很快幫我完成比較瑣碎的事,讓我能夠focus在程式的核心邏輯上。
轉換的過程或許會有個陣痛期,不過相信我,當你上手VIM之後,你就會不想回去了😂
總結一下:
- VIM的啟動速度快、輕量、不佔用大量的記憶體
- 能夠流暢的編輯文字(code, 文章內容等等)
- Linux系統自帶,不用額外安裝(Mac也有)
- 提升寫code效率,不使用滑鼠
- 讓你看起來更像一個hacker😂
接下來會介紹一些實用的功能,帶大家更認識VIM這個好用的工具😎