iT邦幫忙

0

[VSCodeVim] Vim的思維、哲學與解決問題之道 (二)

  • 分享至 

  • xImage
  •  

Vim的思維、哲學與解決問題之道 (二)


[系列文目錄]

上篇文章 我們提到了兩點使用Vim的重點原則:

  1. 先閱讀,再寫作。
  2. 用組合命令解決問題。

這篇文章我們繼續詳述下面兩點:

  1. 用更少的動作完成任務。
  2. 減少重複,提高效率。

三、用更少的動作完成任務


在使用Vim時,我們的動作組合是可以不斷琢磨而進步的。透過練習用更少的動作完成任務,我們會越來越有感覺。

並不是所有的組合命令都是最佳解。在前面的組合例子中,我們用最小的動作完成目標。對於剛接觸的朋友來說,未必可以一下找到某個情境的最佳解法。

以上篇文章中刪除ag字元的示範為例,您可能想先直接進入可視模式(Visual Mode),從a手動選取到g,再用d命令刪除。此時太在意最佳解的話可能因為多按了好幾個鍵,感到煩躁,轉而尋找其它組合完成目標。

進一步優化的話,您也許會選擇組合vfg,使用vfg 選取後,再用d 刪除。最後發現其實自己只要用dfg
就可以完成任務了。

但是,不用想要什麼問題都找到最佳解才開始,這樣反而會過度專注在工具上,拖慢思考的速度。先用自己最自然的命令組合開始,之後慢慢改進即可。

日常開發速度的瓶頸不見得在打字跟命令的順序上,因此使用不會打斷思考的方式開發,讓自己寫得順,比寫得快重要。若在日常開發時因為思考命令怎麼有效而讓工作停擺,反而是矯枉過正了。

和程式開發一樣,在了解「過早優化為萬惡之源」原則的同時,我們不應該完全放棄那3%可以讓我們提升開發速度的機會。

四、減少重複,提高效率。


在前面的範例中,我們使用了組合的命令,有時候會有多個類似的情境,可以用同樣的命令處理。以一個JavaScript 或TypeScript 開發者熟悉的情境為例,在檔案上面import語法的地方我們有幾個沒有用到或是不存在的類別或物件。

在Vim裡面我們可以先將游標移至該物件上的文字上,如下圖所示:

接著,使用daW組合命令,刪除游標底下的文字與逗號後面的空白。

對於下面第二個有問題的物件,我們繼續將游標移動到該字上,並使用.命令即可重複刪除的動作,不用重新打重複的指令。

如果有多個物件是同名的,在Vim裡面我們可以先使用*命令搜尋同名物件,先按daW 命令完成任務,再按n移至下一個同名的物件,後面按.刪除即可。

但現實情境往往不會那麼簡單,通常沒用到的import物件都是不同名的。

在VS Code裡,有一個內建的命令「 Go to Next Problem in Files (Error, Warning, Info)
(Command ID:editor.action.marker.nextInFiles),可以將游標移動至出現警告或錯誤的文字上。筆者將其綁在MacOS「 Cmd + e 」的快捷鍵上。在移除相同位置的import物件時,先用daW刪除,後面繼續用「 Cmd/Ctrl + e 」與 .命令,即可完成上面任務。

在最後例子裡,我們不僅使用了Vim的.命令解決問題,也合併使用了VS Code的快捷鍵,讓我們在相同情境下處理跟解決問題的方式變得快速。

這正是一個善用Vim的思維與VS Code命令以提高編輯器效率的例子。

在我們使用工具的同時,我們並不侷限什麼功能是Vim的命令,哪些是VS Code或相關的語言服務提供的,然後僅使用Vim組合命令的模式。而是將Vim的思維內化,在現有的環境下(此處我們是使用VS Code與VSCodeVim),選用適當的方式處理當前的問題,也因此節省了相關的時間成本。

解決問題的方法有許多種,在對同名文字操作的情況,VSCodeVim提供gb命令讓我們可以連續選取同名的文字,再統一對文字操作。沒有最好的解法,只有更適合當下情境的做法,請視情況採用方法。除此之外,目前版本VS Code 已經內建了Remove unused Import的相關Code Action,游標移至為使用到的import物件處,點擊Cmd+.,可於跳出的選單下方選取並執行相關操作。在VS Code裡,如果要移除多個unused import,使用此處語言服務提供的功能,這其實是相同情境下更好的做法。

參考資源



圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言