您当前的位置: 首页 >  vim

ITKEY_

暂无认证

  • 0浏览

    0关注

    732博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

vim插件defx配置成类似ranger风格

ITKEY_ 发布时间:2021-06-04 21:01:55 ,浏览量:0

在命令行中我喜欢使用ranger来管理文件。ranger的操作风格与vim类似,我很喜欢。vim中有很多优秀的文件管理插件。今天介绍一下我在使用defx时的心得,分享一下配置。 在这里插入图片描述

defx插件

项目主页 https://github.com/Shougo/defx.nvim

关于

Defx 是一个用于 Neovim/Vim 浏览文件的插件。它取代了已弃用的 vimfiler 插件。

概念
  • 不依赖于 denite.nvim

  • Vim8/neovim 兼容(Vim8 需要 nvim-yarp)

  • 由 Python3 实现

  • 没有双重过滤器功能

  • 栏目特色

  • 源功能,如 denite.nvim

  • 选项

  • 突出显示由列定义

  • 很少的命令(仅:Defx 命令?)

  • 扩展重命名

  • 标记

  • 需要 Windows 支持者

  • 最大功能不喜欢其他文件管理器

安装

注意: defx 需要 Neovim 0.4.0+ 或 Vim8.2+ 和 Python3.6.1+。如果您不确定您是否有此要求,请参阅 要求。

For vim-plug

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 需要 Python3.6.1+ 和 Neovim(0.4.0+) 或带有 if_python3 的 Vim8.2+。如果 :echo has(“python3”)返回1,那么你有 python 3 支持;否则,请参见下文。

注意:推荐使用最新的 Neovim,因为它更快。

您可以使用 pip 启用 Python3 接口:

pip3 install --user pynvim

请为 Vim8 安装 nvim-yarp 插件。 https://github.com/roxma/nvim-yarp 请为 Vim8 安装 vim-hug-neovim-rpc 插件。 https://github.com/roxma/vim-hug-neovim-rpc

关于图标

如果你发现没有像有截图上的那样有图标,安装下面两个插件就可以解决不显示图标的问题。

"显示dev图片
Plug 'ryanoasis/vim-devicons'
Plug 'kristijanhusak/defx-icons'

对应项目地址:

  • https://github.com/ryanoasis/vim-devicons
  • https://github.com/kristijanhusak/defx-icons

然后你还需要给你的终端配置字体,可以参考:https://blog.csdn.net/lxyoucan/article/details/115695733

配置

快捷键的设置,主要为了与ranger保持一至,常用操作是:

项目快捷键下移j 或者 上移k 或者 上一层h 或者 打开l 或者 复制yy剪切dd粘贴pp删除dD新建目录K新建文件N选择文件或者 M全选文件* 或者 vv复制文件路径YY打开或关闭文件夹o执行shell 命令(如:mkdir mv cp等)!指定窗口中打开文件(需要安装t9md/vim-choosewin)i

配置如下:

" Define mappings
"cnoreabbrev sf Defx -listed -new
"      \ -columns=indent:mark:icon:icons:filename:git:size
"      \ -buffer-name=tab`tabpagenr()`
nnoremap sf :Defx -listed -resume
      \ -columns=indent:mark:icon:icons:filename:git:size
      \ -buffer-name=tab`tabpagenr()`
      \ `expand('%:p:h')` -search=`expand('%:p')`
nnoremap fi :Defx -new `expand('%:p:h')` -search=`expand('%:p')`

autocmd FileType defx call s:defx_my_settings()
	function! s:defx_my_settings() abort
	  " Define mappings
	  nnoremap  
	  \ defx#do_action('open')
	  nnoremap  yy
	  \ defx#do_action('copy')
	  nnoremap  dd
	  \ defx#do_action('move')
	  nnoremap  pp
	  \ defx#do_action('paste')
	  nnoremap  l
	  \ defx#do_action('open')
	  nnoremap  
	  \ defx#do_action('open')
	  nnoremap  E
	  \ defx#do_action('open', 'vsplit')
	  nnoremap  n
	  \ defx#do_action('open', 'pedit')
	  nnoremap  i
	  \ defx#do_action('open', 'choose')
	  nnoremap  o
	  \ defx#do_action('open_or_close_tree')
	  nnoremap  K
	  \ defx#do_action('new_directory')
	  nnoremap  N
	  \ defx#do_action('new_file')
	  nnoremap  M
	  \ defx#do_action('new_multiple_files')
	  nnoremap  C
	  \ defx#do_action('toggle_columns',
	  \                'mark:indent:icon:filename:type:size:time')
	  nnoremap  S
	  \ defx#do_action('toggle_sort', 'time')
	  nnoremap  dD
	  \ defx#do_action('remove')
	  nnoremap  a
	  \ defx#do_action('rename')
	  nnoremap  !
	  \ defx#do_action('execute_command')
	  nnoremap  x
	  \ defx#do_action('execute_system')
	  nnoremap  YY
	  \ defx#do_action('yank_path')
	  nnoremap  .
	  \ defx#do_action('toggle_ignored_files')
	  nnoremap  ;
	  \ defx#do_action('repeat')
	  nnoremap  h
	  \ defx#do_action('cd', ['..'])
	  nnoremap  
	  \ defx#do_action('cd', ['..'])
	  nnoremap  ~
	  \ defx#do_action('cd')
	  nnoremap  q
	  \ defx#do_action('quit')
	  nnoremap  
	  \ defx#do_action('toggle_select') . 'j'
	  nnoremap  m
	  \ defx#do_action('toggle_select') . 'j'
	  nnoremap  vv
	  \ defx#do_action('toggle_select_all')
	  nnoremap  *
	  \ defx#do_action('toggle_select_all')
	  nnoremap  j
	  \ line('.') == line('$') ? 'gg' : 'j'
	  nnoremap  k
	  \ line('.') == 1 ? 'G' : 'k'
	  nnoremap  
	  \ defx#do_action('redraw')
	  nnoremap  
	  \ defx#do_action('print')
	  nnoremap  cd
	  \ defx#do_action('change_vim_cwd')
	endfunction

call defx#custom#column('icon', {
      \ 'directory_icon': '▸',
      \ 'opened_icon': '▾',
      \ 'root_icon': ' ',
      \ })
call defx#custom#column('git', 'indicators', {
  \ 'Modified'  : 'M',
  \ 'Staged'    : '✚',
  \ 'Untracked' : '✭',
  \ 'Renamed'   : '➜',
  \ 'Unmerged'  : '═',
  \ 'Ignored'   : '☒',
  \ 'Deleted'   : '✖',
  \ 'Unknown'   : '?'
  \ })
指定窗口中打开文件

这一点我单独列出来说一下,因为我觉得这个对我来说非常的实用。可以选择文件在哪个窗口打开,这个是我一直想要的功能。实现起来很简单。 安装插件

Plug 't9md/vim-choosewin'

配置

" if you want to use overlay feature
let g:choosewin_overlay_enable = 1

好了,这下可以愉快的使用i来在指定窗口打开想要打开的文件啦。

总结

这样配置下来,在vim中使用defx的感觉基本与ranger差不多了。用起来很顺手。

虽然vim中也可以直接使用ranger,可以参考:《vim中使用ranger强强联手更快更强》 https://blog.csdn.net/lxyoucan/article/details/116486176

毕竟defx是vim 的插件与vim结合的相对更紧,可配置的地方更多。

在vim中使用ranger如下图所示: vim中使用ranger defx如下图所示: defx 从界面上可以看出defx的图标有不同的颜色更鲜艳。defx可以在指定窗口打开文件,这点我很喜欢。而且在vim中定义的一些按键映射直接就可以使用比如: ⇒ 5j 这个我经常用,直接就可以使用了。

而ranger作为一个专业的文件管理器,文件管理相关的细节会更多。各有优缺点,选哪个呢?作为vim中的文件管理器,两都都非常够用。 小孩子才做选择,我都要。用哪个看心情好了。

灵感源于

https://github.com/craftzdog/dotfiles-public/blob/master/.config/nvim/plugins/defx.rc.vim

关注
打赏
1665243900
查看更多评论
立即登录/注册

微信扫码登录

0.0447s