使用它,可避免微软的文件管理器,因为它会崩溃!
Dirvish是极简目录查看器.转储路径列表到Vim缓冲区中并提供一些快捷键.
因为每个Dirvish缓冲区名都是字面目录路径,所以可:cd到目录,
:cd %
创建新文件,
:edit %/foo.txt
expand()目录路径,
:let &titlestring=expand('%',1)
并使用如(unimpaired.vim)中]f/[f的补全插件命令.
可用普通的yank,:read,gf等Vim命令.它永远不会修改文件系统.
如果编辑缓冲区,Dirvish会自动禁用隐藏,以便可看到全文.
映射| 命令 | 意思 |
|---|---|
| 打开当前文件目录或第[count]个父目录 |
局部,缓冲区本地(文件类型=dirvish)映射:
| 映射 | 意思 |
|---|---|
| G?,显示帮助. | |
| [count]R | 重新加载当前目录.(:edit也可以),如果给定,设置g:dirvish_mode为[count].助记:更高[count]=>更多文件. |
| 退出并返回到原文件. | |
| 打开第[count]个父目录. | |
| 在新窗口中打开第[count]个父级. | |
| 在新垂直窗口中打开第[count]个父级. | |
| <2-LeftMouse>或i或 | 打开光标处文件. |
| {Visual}I或{Visual} | 打开选定文件. |
| o | 在新窗口中打开文件. |
| {Visual}O | 在新窗口中打开每个选定文件. |
| a | 在新垂直窗口中打开文件. |
| {Visual}A | 在新垂直窗口中打开每个选定文件. |
| K | 显示文件信息.[count]显示目录大小. |
| {Visual}K | 显示选定文件信息.[count]显示目录大小. |
| p | 预览光标处的文件. |
| CTRL-N | 预览下一个文件. |
| CTRL-P | 预览前一个文件. |
| 在本地arglist中添加/删除文件. | |
| {Visual}x | 添加选定文件到本地arglist. |
| dax | 启动新空本地arglist. |
| . | 在命令行中插入:!{path}. |
| {Visual}. | 在命令行中插入:Shdo {}. |
| [count]. | 在命令行中插入:Shdo!{}. |
| ~ | 打开家目录. |
| cd | 设置本地当前目录.:lcd |
| [count]cd | 设置全局当前目录.:cd |
| 命令 | 意思 |
|---|---|
| :Dirvish | 打开当前目录,:Dirvish %也可以 |
| :Dirvish{path} | 打开位于{path}的目录,如果{path}是文件,则打开其父目录 |
| 函数 | 意思 |
|---|---|
| dirvish#open() | 同下 |
| [range]dirvish#open({cmd}, {bg}) | 在[range]区间中,执行{cmd} ("edit", "vsplit", "split", "tabedit")命令.{bg}为`0(当前窗口) |
| dirvish#add_icon_fn(fn) | 注意路径图标 |
| dirvish#remove_icon_fn() | 注册图标 |
g:dirvish_mode,控制如何列举与展示.
1为'suffixes'和'wildignore'决定排序和可见.
2按glob()序.
:{cmd}为列举后执行命令.
助记符:更高的数字=>更多文件,在第一次打开目录时,触发BufNew,未加载.加载后,触发FileType.可通过它覆盖映射,选项和内容.
augroup dirvish_config
autocmd!
"映射`t`来在新tab中打开
autocmd FileType dirvish
nnoremap t :call dirvish#open('tabedit', 0)
|xnoremap t :call dirvish#open('tabedit', 0)
"映射`gr`来重载
autocmd FileType dirvish nnoremap
gr :Dirvish %
" 映射`gh`来隐藏点前缀文件.按`R`来切换
autocmd FileType dirvish nnoremap
gh :silent keeppatterns g@v/.[^/]+/?$@d _:setl cole=3
augroup END
常见问题解答
用'splitbelow'和'splitright'控制拆分窗口位置.
如何分组或排序目录?
:sort ,^.*[/], :sort ,^.*[^/], //上面为顶部,下面为底部排序. let g:dirvish_mode = ':sort ,^.*[/],' //来自动排序.
用了g:dirvish_relative_paths,则用
let g:dirvish_mode = ':sort ,^v(.*[/])|ze,'
如何过滤?
:g/foo/d let g:dirvish_mode = ':silent keeppatterns g/foo/d _' //自动过滤 :g@v/.[^/]+/?$@d //删除显示隐藏文件.
自动化的话:
let g:dirvish_mode = ':silent keeppatterns g@v/.[^/]+/?$@d _' autocmd FileType dirvish silent keeppatterns g@v/.[^/]+/?$@d _
要显示,则用撤销,要再次隐藏,用重载.
禁用映射augroup dirvish_config autocmd! autocmd FileType dirvish silent! unmap//禁用 augroup END
禁用所有本缓冲:
:mapclear
用:noswapfile避免交换文件.
:Shdo可批量删/重命名/其他动作文件.因为:'<,'>call delete(getline('.'))太长了.
覆盖netrw的:Explore,:Sexplore,:Vexplore命令?
把如下放入vimrc中:
let g:loaded_netrwPlugin = 1 command! -nargs=? -complete=dir Explore Dirvishcommand! -nargs=? -complete=dir Sexplore belowright split | silent Dirvish command! -nargs=? -complete=dir Vexplore leftabove vsplit | silent Dirvish
如何内联(如树样式视图)扩展目录?
augroup dirvish_config
autocmd!
autocmd FileType dirvish
nnoremap t ddO:let @"=substitute(@", 'n', '', 'g'):r ! find """ -maxdepth 1 -print0 | xargs -0 ls -Fd:silent! keeppatterns %s//////g:silent! keeppatterns %s/[^a-zA-Z0-9/]$//g:silent! keeppatterns g/^$/d:noh
"有点麻烦.会使用"寄存器
augroup END



