在vimrc中配置“ F2切换当前文件所在目录的目录树 (有nerdtree plug版)

在vimrc中配置“ F2切换当前文件所在目录的目录树 (有nerdtree plug版)
F2切换当前文件所在目录的目录树 nnoremap silent F2 :call ToggleProjectTree()CR function! ToggleProjectTree() let l:current_dir expand(%:p:h) 检查是否已经是netrw窗口 if filetype # netrw close else 垂直分割窗口并在左侧显示目录树 execute leftabove vsplit execute edit . l:current_dir endif endfunction netrw基本设置 let g:netrw_banner 0 关闭顶部横幅 let g:netrw_liststyle 3 树形显示 (3tree view) let g:netrw_winsize 25 窗口宽度百分比 let g:netrw_browse_split 4 在之前窗口打开文件功能说明按下F2键会如果当前是目录树窗口则关闭它如果不是则在左侧垂直分割窗口中打开当前文件所在目录的树形视图使用Vim内置的netrw功能不需要额外插件主要配置项netrw_liststyle3- 启用树形显示netrw_winsize25- 设置目录树窗口占25%宽度netrw_browse_split4- 在之前窗口打开文件增强版配置可选如果你想要更完善的功能可以使用这个增强版本 增强版F2目录树切换 nnoremap silent F2 :call EnhancedToggleProjectTree()CR function! EnhancedToggleProjectTree() let l:current_dir expand(%:p:h) let l:netrw_bufnr bufnr(^ . l:current_dir . $) 如果netrw窗口已存在则关闭它 if l:netrw_bufnr ! -1 filetype # netrw silent execute bwipeout . l:netrw_bufnr return endif 保存当前窗口状态 let l:current_win winnr() let l:current_buf bufnr(%) 尝试找到已存在的netrw窗口 let l:found 0 windo if filetype # netrw | let l:found winnr() | endif if l:found execute l:found . wincmd w execute edit . l:current_dir else 创建新的垂直分割窗口 execute leftabove vsplit execute edit . l:current_dir 设置窗口宽度 execute vertical resize . g:netrw_winsize endif 返回原来的窗口 execute l:current_win . wincmd w 如果当前缓冲区是目录也刷新它 if getbufvar(l:current_buf, filetype) # netrw execute edit . getbufvar(l:current_buf, netrw_curdir) endif endfunction netrw设置 let g:netrw_banner 0 let g:netrw_liststyle 3 let g:netrw_winsize 25 let g:netrw_browse_split 4 let g:netrw_altv 1 let g:netrw_hide 1 不显示隐藏文件(设为0显示隐藏文件) let g:netrw_list_hide .*\.swp$,.*\.bak$,^\.\.\/\$ 隐藏临时文件这个增强版本能更好地处理窗口切换和缓冲区管理提供更流畅的体验。