用 VimScript 写这个:"If Lexplore opened a file(anyfile) then close Lexplore"

Write this in VimScript : "If Lexplore opened a file(anyfile) then close Lexplore"

我想: 打开文件后自动关闭 Lexpore 以获得更好的体验,但我不知道 vim 脚本。 这应该不难,我想。 我将不胜感激任何评论!

我现在正在学习 vim 脚本并尝试这样做。 这是我现在的位置:

:autocmd <Lexplore> * :<Lexplore-exit>

if <command-mode> == "Lexplore *.*"
    excute \close last buffer. (because now I am in new buffer)

我只需要知道如何在脚本中说“运行”/“运行ED” 然后我对任何文件使用正则表达式,我需要说“关闭”。

事实是 我真的很绝望! :))))))))))))

在完全使用 VimScript 之前,还有其他方法可以尝试。在这种情况下,一个简单的映射可能就足够了。

基本上,映射的右侧只是一个宏,您可以自己键入的一系列命令,这使得映射成为发现 Vim 自动化的一种非常好的且易于使用的方法。

假设一个简单的布局,只有一个 window,您如何手动完成您描述的内容?

  1. :Lexplore 并四处浏览。
  2. 在 Netrw window 中,您按 <CR> 打开文件。
  3. 然后你用<C-w>p.
  4. 回到之前的window(Netrwwindow)
  5. 您用 <C-w>q 关闭了 window。

上面2-4步很容易转成映射(<key>是占位符,随便用):

nmap <key> <CR><C-w>p<C-w>q

但是映射随处可用,这可能不是一个好主意。输入文件类型插件的概念:

  1. 如果这些目录尚不存在,请创建它们:

    ~/.vim/after/ftplugin/                          (Unix-like systems)
    %userprofile%\vimfiles\after\ftplugin\          (Windows)
    
  2. 在上面的目录中创建一个netrw.vim文件:

    ~/.vim/after/ftplugin/netrw.vim                 (Unix-like systems)
    %userprofile%\vimfiles\after\ftplugin\netrw.vim (Windows)
    
  3. 将上面的映射放入该文件中:

    nmap <buffer> <key> <CR><C-w>p<C-w>q
    

    <buffer> 告诉 Vim 只定义 Netrw 中的映射。

这是最简单的方法,可能适合也可能不适合您。


关于您的评论的几点说明...

  • 缓冲区编号是实现细节。它们在您的日常工作中根本无关紧要,因此您不应该过多地考虑它们。缓冲区 名称 更有用,也更容易考虑。
  • “侧边栏文件资源管理器”UX 模式是一种熟悉的模式,新手喜欢从他们以前的编辑器转移过来,但它需要与 Vim 本身进行大量斗争才能“工作”。 Netrw 对模式的看法是不同的,是的,它可能需要时间来适应,但它更适合整体体验。提示:放弃 :Lexplore:Explore:Sexplore:Vexplore:Texplore 更有用。
  • 随着您了解更多,您很快就会发现文件浏览器,无论它们遵循什么 UX 模式,一开始都有用。
  • Netrw 已有在新标签页打开文件的映射::help netrw-t.