如何用VimScript实现Lexplore打开文件后自动关闭的功能
Vim Lexplore 打开文件后自动关闭的实现方案
可用配置
方案1:修改Netrw回车映射(推荐)
该方案仅在你在Lexplore中按回车打开文件时触发关闭,不会影响你正常浏览文件不打开的操作,逻辑更精准。将以下代码加入你的.vimrc/init.vim即可生效:
augroup NetrwAutoClose autocmd! " 仅对Netrw类型的buffer生效,修改回车映射 autocmd FileType netrw nmap <buffer> <CR> <CR>:Lexplore<CR> augroup END
方案2:全局自动监听切换
如果你只要切出Netrw窗口就自动关闭,可以用这个全局监听方案:
autocmd BufEnter * if winnr('$') > 1 && &filetype !=# 'netrw' && exists('b:netrw_curdir') | Lexplore | endif
原尝试代码问题说明
你写的两段代码存在语法和逻辑问题:
- 第一段的
autocmd <Lexplore> * :<Lexplore-exit>不符合Vim autocmd语法,autocmd第一个参数必须是Vim内置事件(比如BufEnter/FileType),没有<Lexplore>这种自定义事件标记。 - 第二段的
if <command-mode> == "Lexplore *.*"逻辑不存在,VimScript没有<command-mode>这个内置变量,也不需要通过匹配命令输出来实现功能。
核心知识点说明
- 匹配任意文件:autocmd的路径匹配位写
*即可匹配所有文件,文件类型匹配写*即可匹配所有类型。 - 判断Lexplore状态:可以通过
&filetype ==# 'netrw'判断当前buffer是不是Netrw(Lexplore本质是Netrw的侧边窗口模式),也可以通过exists("b:netrw_curdir")做二次校验。 - 关闭Lexplore逻辑:直接调用
:Lexplore命令即可,这个命令本身是开关特性,窗口已开启时调用就会关闭。
内容的提问来源于stack exchange,提问作者ju pasknow
相关产品推荐
相关产品推荐

