星期六, 11月 17, 2012

ctrlp.vim 專案開發時開檔案的好幫手

最近看到一些人開始用 Sublime Text2,所以去官網看了一下介紹,個人是沒有使用過但是那個 fuzzy search 的功能讓我蠻喜歡的。 剛好,上個禮拜在 Vim-Taiwan 中看到有人分享 ctrlp.vim 這個 plugin,雖然大部分的時候我很清楚什麼檔案放在什麼地方,但是有時候要輸入一堆路徑,即使大部分都可以 tab 補完,還是覺得有點煩人,決定來試看看這個 plugin。 這個 plugin 主要的目的就是找檔案,裝好以後按 ctrl+p 會叫出搜尋的 window,比如說我想找到的檔案路徑是
/assets/js/user.iced
那我只要輸入類似這種的路徑: as/j/u.id 就可以找到需要的檔案(當然要看有沒有其他檔案有類似的組成) 找到以後有幾種開啟方法:

  • enter: 可以在目前 window 中打開(如果已存在其他 tab 中會跳過去)
  • C-t: 會開新的 tab
  • C-v: 把目前的 window 做垂直切割開啟
其他一些指令可以參考 :help ctrlp-mappings 剛裝完 ctrlp 的時候可能會覺得他啟動有點慢,在 OSX/Linux 底下的話可以設定用 git ls-files 或 find 來做檔案列表的建立,速度會有明顯的改善,在 ~/.vimrc 裡面加入
  let g:ctrlp_user_command = {
    \ 'types': {
      \ 1: ['.git', 'cd %s && git ls-files -c -o --exclude-standard'],
      \ 2: ['.hg', 'hg --cwd %s locate -I .'],
      \ },
    \ 'fallback': 'find %s -type f'
    \ }
*2014 09/11 Update: 加入 --exclude-standard 這是從 :help ctrlp_user_command 複製下來的範例把 git ls-files 改成 git ls-files -c -o,這樣才能一併搜尋到還沒被 cache 的檔案。
----
另外有一個 plugin 叫做 unite.vim,似乎也不錯,自訂性更高,除了該有的檔案, MRU, Buffer 搜尋,使用者還可以自訂搜尋的來源,如何篩選,以及如何打開。換句話說,你可以搜任何存在/不存在的東西,讓我想到也許可以做出類似 Dash 的東西(一開始看到 dash 是想說可能要做成一種輸入法應該蠻酷的)

沒有留言: