Vim中如何在netrw内静默打开新标签页不自动跳转?
现有netrw配置
let g:netrw_banner = 0 let g:netrw_liststyle = 4 let g:netrw_browse_split = 4 let g:netrw_altv = 1 let g:netrw_winsize = 15 nmap <C-n> :Lexplore <bar> vertical resize 30 <CR>
当前配置下按下<CR>会在新标签页打开文件,但打开后会自动跳转至新标签,无法停留在netrw界面批量选中多个待编辑文件。
实现方法
netrw本身没有提供后台新建标签不跳转的内置配置,可以通过自定义netrw缓冲区的局部映射实现需求,将以下代码追加到你的vim配置文件即可,原有配置无需改动:
augroup netrw_custom_mapping autocmd! autocmd FileType netrw nmap <buffer> <CR> :call NetrwSilentTabOpen()<CR> augroup END function! NetrwSilentTabOpen() " 记录当前netrw所在标签页编号 let l:origin_tab = tabpagenr() " 获取当前光标选中的条目路径 let l:target = netrw#Call('NetrwGetFile') if filereadable(l:target) " 新建标签页打开选中文件 execute 'tabedit ' . fnameescape(l:target) " 切回原netrw所在标签页,保持光标停留在netrw界面 execute 'tabnext ' . l:origin_tab else " 选中条目为目录时,保留原有进入目录的逻辑 call netrw#Call('NetrwLocalBrowseCheck') endif endfunction
效果说明
- 映射仅在netrw缓冲区生效,不影响其他文件窗口的按键行为
- 选中普通文件按
<CR>:后台新建标签打开文件,不跳转,可连续选中多个文件批量打开 - 选中目录按
<CR>:保持原有逻辑,进入对应目录浏览 - 原有netrw默认的
t键(新标签打开文件并跳转)功能不受影响,需要打开单个文件直接跳转时使用t即可
内容的提问来源于stack exchange,提问作者Suikyoo
相关产品推荐
相关产品推荐

