我喜欢使用 vim 的内置 netrw 插件来列出项目文件。有时,当我展开文件夹以查看其内容时,我需要将其折叠并转到下一个文件夹。例如,在屏幕右侧,我想折叠components
文件夹并轻松转到elementcss
.
可能吗?
更新
当我的光标在文件夹内时,我需要折叠components
。因为我可以按回车键折叠它。
我假设您使用的是 netrw 的树形列表模式:光标位于目录名称上方,[return] 将在显示目录内容和不显示目录内容之间切换。
自 netrw v151(2014 年 3 月)以来出现的 (shift+return) 映射也将满足您的要求(挤压父目录)。它仅限于与 gvim 一起使用,因为大多数终端不会将 shift-return 传递给 vim。
我还需要折叠一个父文件夹,所以我创建了这个函数并将其映射到 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>
,因此从那里调用它。在较新的系统上工作得更好。