什麼是Defx
Defx是一款全新的在neovim下的檔案樹外掛。它具有以下特點
- 不依賴於 denite.nvim
- 相容vim8和neovim(vim8下需要安裝nvim-yarp)
- 使用Python3實現
- 類似於denite.nvim一樣支援 source
還有一些其他的特點就不一一介紹了,大家可以點選專案主頁前往檢視。
那麼,對比經典的老牌外掛NerdTree有什麼優點呢,最大的優點是非同步功能,這樣就比NerdTree的載入速度要快很多。除此之外,還可以像VSCode和PHPStorm等現代化的IDE一樣為每個檔案加上圖示。
安裝
Defx需要Neovim 0.3.0+ 或者 Vim 8.1+ 以及 Python3.6.1+。我使用的是vim-plug來管理外掛,配置程式碼如下。如果你使用的是其他外掛管理,那麼需要你自行查詢對應的方法。另外如果只使用neovim的話,那麼只需要新增下面if中的內容即可。
if has('nvim')
Plug 'Shougo/defx.nvim', { 'do': ':UpdateRemotePlugins' }
else
Plug 'Shougo/defx.nvim'
Plug 'roxma/nvim-yarp'
Plug 'roxma/vim-hug-neovim-rpc'
endif
使用和配置
安裝完成後我們可以使用Defx
命令來使用。
我們可以發現,這個Buffer充滿了我們的視窗,這可不是我們想要的效果。我們需要對其進行配置。
優化配置
call defx#custom#option('_', {
\ 'winwidth': 30,
\ 'split': 'vertical',
\ 'direction': 'topleft',
\ 'show_ignored_files': 0,
\ 'buffer_name': '',
\ 'toggle': 1,
\ 'resume': 1
\ })
這段配置必須位於上面的Plug配置之後,否則會報錯(當然應該也有其他的解決辦法,歡迎大家提出指正)。
配置之後的效果如下:
設定快捷鍵
當然,我們總是輸入Defx
命令很麻煩是不是,我們可以將快捷鍵對其進行繫結。
nmap <silent> <Leader>e :Defx <cr>
我的Leader
鍵為,
,所以我按下,
和e
鍵即可快速開啟和關閉Defx
其他快捷鍵
autocmd FileType defx call s:defx_mappings()
function! s:defx_mappings() abort
nnoremap <silent><buffer><expr> l <SID>defx_toggle_tree() " 開啟或者關閉資料夾,檔案
nnoremap <silent><buffer><expr> . defx#do_action('toggle_ignored_files') " 顯示隱藏檔案
nnoremap <silent><buffer><expr> <C-r> defx#do_action('redraw')
endfunction
function! s:defx_toggle_tree() abort
" Open current file, or toggle directory expand/collapse
if defx#is_directory()
return defx#do_action('open_or_close_tree')
endif
return defx#do_action('multi', ['drop'])
endfunction
上面的配置我們可以使用.
鍵來顯示和隱藏忽略檔案,l
鍵來開啟關閉檔案或者資料夾。其他的內容就需要你們自己配置了。
新增圖示支援
在安裝對應的外掛之前,你需要安裝Nerd-Font
字型安裝
brew tap homebrew/cask-fonts
brew cask install font-hack-nerd-font
iTerm2設定
安裝完之後重啟iTerm2,然後按照下面圖片的設定即可。
安裝外掛
Plug 'kristijanhusak/defx-icons'
安裝完成之後,我們就能看到漂亮的圖示啦!