今天分享一下我至今爲止寫的最滿意的一個 Vim 插件:https://github.com/liuchengxu/vim-clap, 它是一個用於模糊查找和搜索的 Vim 插件,在同類插件中最先同時支持 neovim 的floating_win
和 vim 的popup
, 這也是我造這個輪子的初衷之一。git
在早期,做爲一個純 vimscript 實現的 Vim 插件,vim-clap 在進行大規模搜索時自然會有嚴重的性能問題,不過自從經過使用 Rust 對插件進行擴展之後,如今已經不存在有性能問題,能夠輕鬆面對上百萬的文件搜索。同時,vim-clap 也提供了二進制供直接下載,而且提供了方便的安裝方式。若是使用 vim-plug:github
" 本地編譯 Rust 擴展,須要安裝 cargo Plug 'liuchengxu/vim-clap', { 'do': ':Clap install-binary' } " 若是加上 !, 則當本地不存在 cargo 時, 直接下載 GitHub Release 上提供的二進制 Plug 'liuchengxu/vim-clap', { 'do': ':Clap install-binary!' }
v0.6 的一些新特性:vim
g:clap_layout
支持g:clap_layout
控制窗口的彈出位置,如今的默認位置相對於喚出 clap 的所在窗口,大小也是相對於該窗口的大小。編輯器
g:clap_layout
模擬的是 neovim 的 API, 若是但願打開位置相對於整個編輯器而不是所在窗口:ide
let g:clap_layout = { 'relative': 'editor' }
寬度更寬一點:性能
let g:clap_layout = { 'width': '95%', 'col': '5%' }
g:clap_theme
vim-clap 在 UI 上很是豐富,默認狀況下是從用戶的 colorscheme 中提取顏色,因此自適應於各類主題。可是即便是自適應,也沒法保證對全部主題都適用,並且好像不少人不太會配置主題,因此 v0.6 內置了一個主題material_design_dark
, 在自適應表現很差的狀況下,能夠使用內置主題:ui
let g:clap_theme = 'material_design_dark'
也能夠改變material_design_dark
的部分顏色, 好比將搜索文本改成紅色:spa
let g:clap_theme = { 'search_text': {'guifg': 'red', 'ctermfg': 'red'} }
還有一些其餘改進參見https://github.com/liuchengxu/vim-clap/releases/tag/v0.6, 好比新增loclist
provider, 不少 linter 能夠將信息填充到 location list, 如今能夠很方便的經過 vim-clap 進行過濾查看錯誤信息,同時支持預覽功能:插件
不少其餘特性就不一一介紹了,詳情查看https://github.com/liuchengxu/vim-clap/blob/master/README.md和https://github.com/liuchengxu/vim-clap/blob/master/CHANGELOG.md。code