neovim 下 defx 的安装与使用

什么是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

本作品采用《CC 协议》,转载必须注明作者和本文链接
There's nothing wrong with having a little fun.
Epona
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!