用過 XCode 的 "shift+command+o" 快速開啟檔案後, 一直很想在 vim 內用同樣的功能。按個快速鍵會跳出一個輸入框, 接著只要打部份字串, 就會濾出有可能的檔案。
看到 DK 和 cmd 推薦用 ctrlp, 就來試用一下。試用後感覺相當不錯, 用法如下:
- 在 command mode 打 ctrl+p
- 打檔名
- 選定檔案, 按 ctrl+t 開在新分頁; 按 ctrl+v 開在目前分頁的新 window; 按 enter 開在目前分頁
ctrlp 除介面好用外, 另一大優點是使用 pure vim script, 理論上有 vim 的平台都能用 ctrlp。不過最近用一陣子後發覺一些小問題, 微調之後才會更好用。
在 $HOME/.vimrc 中加上這幾行:
- let g:ctrlp_clear_cache_on_exit = 0 " 離開 vim 後不要清 cache
- let g:ctrlp_max_files = 1000000 " 加大 cache 索引的檔案數, 否則會漏找檔案
- let g:ctrlp_user_command = 'find %s -type f' " 使用 find 加速建索引的速度
備註: 無用的實驗觀察
之前沒讀完官網, 漏看了參數 g:ctrlp_user_command, 只好自己手動建索引加速, 下面的心得就當紀念吧。
另外 cache 預設存放在 $HOME/.cache/ctrlp 下, 若嫌 ctrlp 建 cache 太慢, 可以自己手動建:
$ cd /path/to/target $ index=$(echo `pwd` | sed 's#/#%#g' | sed 's#$#.txt#') $ find . | cut -b 3- | LC_ALL=C sort > $HOME/.cache/ctrlp/$index自己建會快超多, 不過會比較不乾淨一點, ctrlp 似乎有濾掉不能開的檔案, 像是目錄或圖檔之類的。
沒有留言:
張貼留言