【发布时间】:2016-02-05 04:34:56
【问题描述】:
我喜欢使用 vim 内置的 netrw 插件来列出项目文件。有时,当我展开文件夹以查看其内容时,我需要将其折叠并转到下一个文件夹。比如我想在屏幕右侧折叠components文件夹,轻松转到elementcss。
有可能吗?
更新
当我的光标在components 文件夹内时,我需要折叠。因为我可以直接按回车折叠它。
【问题讨论】:
我喜欢使用 vim 内置的 netrw 插件来列出项目文件。有时,当我展开文件夹以查看其内容时,我需要将其折叠并转到下一个文件夹。比如我想在屏幕右侧折叠components文件夹,轻松转到elementcss。
有可能吗?
更新
当我的光标在components 文件夹内时,我需要折叠。因为我可以直接按回车折叠它。
【问题讨论】:
我假设您使用的是 netrw 的树形列表模式:光标位于目录名称上方时,[return] 将在显示目录内容和不显示目录内容之间切换。
自 netrw v151(2014 年 3 月)以来出现的 (shift+return) 映射也将满足您的要求(挤压父目录)。它仅限于与 gvim 一起使用,因为大多数终端不会将 shift-return 传递给 vim。
【讨论】:
elementcss,而不是 templates。
我还需要折叠一个父文件夹,所以我创建了这个函数并将其映射到 x 键。
" map x key to collapse parent folder
autocmd FileType netrw nmap <buffer> x :call NetrwCollapse()<CR>
function! NetrwCollapse()
redir => cnt
silent .s/|//gn
redir END
let lvl = substitute(cnt, '\n', '', '')[0:0] - 1
exec '?^\(| \)\{' . lvl . '\}\w'
exec "normal \<CR>"
endfunction
编辑:我已将映射更改为 autocmd FileType 而不是 autocmd filetype,因为某些系统需要大写。
Edit2:将映射更改为只调用一次<CR>。然后在函数末尾添加了一个普通的<CR>,因此从那里调用它。在较新的系统上工作得更好。
【讨论】:
x 的默认映射以打开html、jpeg 等文件(:help netrw-x)