Vim 设置netrw-like NERDTree
我使用Vim 设置netrw-like NERDTree,vim,netrw,Vim,Netrw,我使用nmap:nerdtreetobggle切换nerdtree窗口。如何使用netrw实现同样的功能 缓冲区列表中未显示nerdtree窗口(:ls)。netrw列在缓冲区列表中。我怎样才能使它不被列出 :bn命令起作用,但在netrw窗口中,:bp命令不起作用。这是虫子吗 “Vexplore”命令打开垂直目录浏览器。通过将以下代码添加到.vimrc文件中以使用Ctrl-E切换垂直浏览器(例如),可以在此基础上进行构建: 其实 let g:netrw_browse_split = 4 let
nmap:nerdtreetobggle
切换nerdtree窗口。如何使用netrw实现同样的功能
:ls
)。netrw列在缓冲区列表中。我怎样才能使它不被列出:bn
命令起作用,但在netrw窗口中,:bp
命令不起作用。这是虫子吗“Vexplore”命令打开垂直目录浏览器。通过将以下代码添加到.vimrc文件中以使用Ctrl-E切换垂直浏览器(例如),可以在此基础上进行构建: 其实
let g:netrw_browse_split = 4
let g:netrw_altv = 1
最适合我
*g:netrw_browse_split* when browsing, <cr> will open the file by:
=0: re-using the same window
=1: horizontally splitting the window first
=2: vertically splitting the window first
=3: open file in new tab
=4: act like "P" (ie. open previous window)
Note that |g:netrw_preview| may be used
to get vertical splitting instead of
horizontal splitting.
*g:netrw\u browse\u split*浏览时,将通过以下方式打开文件:
=0:重新使用同一窗口
=1:首先水平拆分窗口
=2:首先垂直拆分窗口
=3:在新选项卡中打开文件
=4:表现得像“P”(即打开上一个窗口)
请注意,可以使用| g:netrw|u preview |
要获得垂直拆分而不是
水平分割。
我认为选项4描述了最佳行为。通过按enter键,文件在另一个拆分上打开,避免拆分过多。从
netrw
v150开始,有:Lexplore
,它将切换左侧的netrw
窗口。我刚刚做了一些改进,修复了以下问题:
- 打开100%高的窗口(独立于窗口拆分)
在左侧打开它,:Lexplore
:Lexplore代码>在右边
- 列出当前文件的目录(甚至在远程目录上)
com! -nargs=* -bar -bang -complete=dir Lexplore call netrw#Lexplore(<q-args>, <bang>0)
fun! Lexplore(dir, right)
if exists("t:netrw_lexbufnr")
" close down netrw explorer window
let lexwinnr = bufwinnr(t:netrw_lexbufnr)
if lexwinnr != -1
let curwin = winnr()
exe lexwinnr."wincmd w"
close
exe curwin."wincmd w"
endif
unlet t:netrw_lexbufnr
else
" open netrw explorer window in the dir of current file
" (even on remote files)
let path = substitute(exists("b:netrw_curdir")? b:netrw_curdir : expand("%:p"), '^\(.*[/\\]\)[^/\\]*$','\1','e')
exe (a:right? "botright" : "topleft")." vertical ".((g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize) . " new"
if a:dir != ""
exe "Explore ".a:dir
else
exe "Explore ".path
endif
setlocal winfixwidth
let t:netrw_lexbufnr = bufnr("%")
endif
endfun
" ---------------------------------------------------------------
" File Explorer start
let g:netrw_banner = 0
let g:netrw_liststyle = 3
let g:netrw_browse_split = 4
let g:netrw_altv = 1
let g:netrw_winsize = 15
" Toggle Vexplore with F9
map <silent> <F9> :Lexplore<CR>
" File Explorer end
" ---------------------------------------------------------------
切换功能
这是我的切换函数版本,基于Nick的答案。现在,您可以在任何窗格中使用热键,而不仅仅是在netrw的窗格中。在Nick的版本中,它会导致一个错误,我也做了一些代码清理并将其重新映射到Ctrl-O,因为默认情况下使用Ctrl-E向下滚动一行
" Toggle Vexplore with Ctrl-O
function! ToggleVExplorer()
if exists("t:expl_buf_num")
let expl_win_num = bufwinnr(t:expl_buf_num)
let cur_win_num = winnr()
if expl_win_num != -1
while expl_win_num != cur_win_num
exec "wincmd w"
let cur_win_num = winnr()
endwhile
close
endif
unlet t:expl_buf_num
else
Vexplore
let t:expl_buf_num = bufnr("%")
endif
endfunction
map <silent> <C-O> :call ToggleVExplorer()<CR>
“使用Ctrl-O切换Vexplore
函数!ToggleVExplorer()
如果存在(“t:expl_buf_num”)
让expl_win_num=bufwinnr(t:expl_buf_num)
让cur_win_num=winnr()
如果expl\u win\u num!=-1
而expl\u win\u num!=cur\u win\u num
执行官“wincmd w”
让cur_win_num=winnr()
循环结束
关闭
恩迪夫
取消设置t:expl_buf_num
其他的
维克斯普洛尔
设t:expl_buf_num=bufnr(“%”)
恩迪夫
端功能
映射:调用ToggleVExplorer()
变量“t:expl\u buf\u num”是当前选项卡的全局变量,因此每个选项卡可以有一个资源管理器。如果希望能够在每个窗口中打开资源管理器,可以将其更改为“w:expl\u buf\u num”
在浏览器中保持焦点
另外,我喜欢在我的.vimrc上有这个:
" Open file, but keep focus in Explorer
autocmd filetype netrw nmap <c-a> <cr>:wincmd W<cr>
“打开文件,但在资源管理器中保持焦点。”
autocmd文件类型netrw nmap:wincmd W
“使用Ctrl-E切换Vexplore
函数!ToggleVExplorer()
词汇库
垂直调整30
端功能
映射:调用ToggleVExplorer()
简化作为一种与类似且更简单的方法,您可以在.vimrc中使用F9将其切换(并且非常像NERDTree):
com! -nargs=* -bar -bang -complete=dir Lexplore call netrw#Lexplore(<q-args>, <bang>0)
fun! Lexplore(dir, right)
if exists("t:netrw_lexbufnr")
" close down netrw explorer window
let lexwinnr = bufwinnr(t:netrw_lexbufnr)
if lexwinnr != -1
let curwin = winnr()
exe lexwinnr."wincmd w"
close
exe curwin."wincmd w"
endif
unlet t:netrw_lexbufnr
else
" open netrw explorer window in the dir of current file
" (even on remote files)
let path = substitute(exists("b:netrw_curdir")? b:netrw_curdir : expand("%:p"), '^\(.*[/\\]\)[^/\\]*$','\1','e')
exe (a:right? "botright" : "topleft")." vertical ".((g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize) . " new"
if a:dir != ""
exe "Explore ".a:dir
else
exe "Explore ".path
endif
setlocal winfixwidth
let t:netrw_lexbufnr = bufnr("%")
endif
endfun
" ---------------------------------------------------------------
" File Explorer start
let g:netrw_banner = 0
let g:netrw_liststyle = 3
let g:netrw_browse_split = 4
let g:netrw_altv = 1
let g:netrw_winsize = 15
" Toggle Vexplore with F9
map <silent> <F9> :Lexplore<CR>
" File Explorer end
" ---------------------------------------------------------------
”---------------------------------------------------------------
“文件资源管理器启动
设g:netrw_banner=0
设g:netrw_liststyle=3
设g:netrw\u browse\u split=4
设g:netrw_altv=1
设g:netrw_winsize=15
“使用F9切换Vexplore
地图:Lexplore
“文件资源管理器结束
" ---------------------------------------------------------------
在发布问题或答案之前,不要忘记查看预览。你缺少所有的
结构。我会用“调整大小”来补充/组合Nicks的答案是的-我现在自己做了,并相应地更新了我的答案。太棒了!谢谢。打开文件并切换(关闭)后,第7行出现错误:E16:无效范围:2wincmd w
,Vim 8.0.4。有什么解决方法吗?打开文件后,切换会出现错误:第8行:E16:无效范围:2wincmd w
。事实上,当浏览器不是活动窗口时,每当切换时都会出现错误。VIM8可能存在一些问题?如果您想要基于文件类型的突出显示,请检查“伟大的解决方案”!在呈现NETRW窗格之前,您是否注意到文件内容的闪烁?你知道会发生什么吗?再次感谢@贝托哈雷斯这可能是因为维姆的钟。下面是如何停用它(将它设置为“可视”,然后告诉它什么也不做)set visualbell
set t_vb=
我喜欢你的函数,已经用了一段时间了!然而,您不想重新映射,这与(我经常使用的一对映射)相反。最后,在任何文件类型中重新映射,请尝试!美好的比自定义函数好得多。
" Toggle Vexplore with Ctrl-E
function! ToggleVExplorer()
Lexplore
vertical resize 30
endfunction
map <silent> <C-E> :call ToggleVExplorer()<CR>
" ---------------------------------------------------------------
" File Explorer start
let g:netrw_banner = 0
let g:netrw_liststyle = 3
let g:netrw_browse_split = 4
let g:netrw_altv = 1
let g:netrw_winsize = 15
" Toggle Vexplore with F9
map <silent> <F9> :Lexplore<CR>
" File Explorer end
" ---------------------------------------------------------------