Saturday, March 30, 2019

vim skill & use cases

有幾個我最近才搞懂的 vim 技巧,搭配上使用情境 (use cases) 之後,這些技巧也就不再那麼難以理解了。

< 多重剪貼簿 >
registers 本質上就是 multiple clipboard 。但是,其實平常我也不會特別想要同時使用多個剪貼簿。這個好用的點,通常是當 yank 與 delete 衝突時,就很方便。

常發生的情況是這樣子:

  •  yank 第 15 行,打算 paste 到 28 行。 =>  yy
  • 在 paste 之前,在 27 行做行刪除。 =>  dd
  • 在 28 行按下 p 時,失敗! 因為貼上的並不是原先的第 15 行。


解法是這樣子,最後一個操作要改成  =>  "0p  
"0 這個 register 總是會放入 yank 的資料,如果不指定 register 的話,會使用 default register ,但是在上述的情況, default register 會被 delete 的資料給填充。

輸入 :reg ,就可以看到各個 registers 的內容。

< 重構程式碼、變數重新命名 >
這種時候,用 vimgrep 似乎頗合用。

:vimgrep /PATTERN/  **           =>  在當前目錄與其子目錄下,找出所有的 PATTERN

搭配指令
:cnext, :cn             =>  去下一個找到 PATTERN 的 buffer
:cprevious, :cp      =>  去上一個找到 PATTERN 的 buffer
:copen                   =>  打開 Quickfix 窗口,顯示所有結果
:cclose, :ccl           =>  關閉 Quickfix 窗口



< 不使用 Ctrl - P 的 fuzzy search  >

:e **/*部分檔名
:vsp **/*部分檔名

原理的部分,可以查  :help starstar-wildcard