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中的内容即可。

1
2
3
4
5
6
7
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充满了我们的窗口,这可不是我们想要的效果。我们需要对其进行配置。

优化配置

1
2
3
4
5
6
7
8
9
call defx#custom#option('_', {
\ 'winwidth': 30,
\ 'split': 'vertical',
\ 'direction': 'topleft',
\ 'show_ignored_files': 0,
\ 'buffer_name': '',
\ 'toggle': 1,
\ 'resume': 1
\ })

这段配置必须位于上面的Plug配置之后,否则会报错(当然应该也有其他的解决办法,欢迎大家提出指正)。

配置之后的效果如下:

after-config

设置快捷键

当然,我们总是输入Defx命令很麻烦是不是,我们可以将快捷键对其进行绑定。

1
nmap <silent> <Leader>e :Defx <cr>

我的Leader键为,,所以我按下,e键即可快速打开和关闭Defx

其他快捷键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

字体安装

1
2
brew tap homebrew/cask-fonts
brew cask install font-hack-nerd-font

iTerm2设置

安装完之后重启iTerm2,然后按照下面图片的设置即可。

iTerm2-config

安装插件

1
Plug 'kristijanhusak/defx-icons'

安装完成之后,我们就能看到漂亮的图标啦!

icons