neovim 下 defx 的安裝與使用

Epona發表於2019-10-10

什麼是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命令來使用。

command

init-config

我們可以發現,這個Buffer充滿了我們的視窗,這可不是我們想要的效果。我們需要對其進行配置。

優化配置

call defx#custom#option('_', {
      \ 'winwidth': 30,
      \ 'split': 'vertical',
      \ 'direction': 'topleft',
      \ 'show_ignored_files': 0,
      \ 'buffer_name': '',
      \ 'toggle': 1,
      \ 'resume': 1
      \ })

這段配置必須位於上面的Plug配置之後,否則會報錯(當然應該也有其他的解決辦法,歡迎大家提出指正)。

配置之後的效果如下:

after-config

設定快捷鍵

當然,我們總是輸入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,然後按照下面圖片的設定即可。

iTerm2-config

安裝外掛

Plug 'kristijanhusak/defx-icons'

安裝完成之後,我們就能看到漂亮的圖示啦!

icons

There's nothing wrong with having a little fun.

相關文章