You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vim技巧:如何无需箭头键从当前目录列表打开指定文件

解决Vim中:e命令在:Ex目录界面打开当前目录文件的问题

我懂你的困扰——当你用:Ex打开当前文件所在的目录浏览器后,想用:e命令直接打开目录里的文件,结果它却跑到Vim启动时的根目录去找,确实挺闹心的。下面给你几个实用的解决办法:

  • 直接用相对路径指定文件
    在:Ex界面里,只要在文件名前加上./,就能让:e命令在当前浏览的目录下查找文件,比如:

    :e ./your_file.txt
    

    这个方法简单直接,不用记复杂的变量,临时用一次特别方便。

  • 利用当前文件的目录路径缩写
    因为你是从当前编辑的文件进入:Ex的,Vim有个内置的路径缩写%:h,它代表当前文件所在的目录。你可以这样写:

    :e %:h/your_file.txt
    

    这个命令会始终指向你最初打开的那个文件的目录,适合需要固定关联原文件所在目录的场景。

  • 临时切换当前窗口的工作目录
    如果想让后续的:e命令都默认在当前浏览的目录下操作,可以先执行:

    :lcd %:h
    

    这里的:lcd是local cd的意思,只会改变当前窗口的工作目录,不会影响其他打开的窗口,非常安全。之后再直接用:e your_file.txt就可以直接打开当前目录的文件了。

  • 利用netrw的内置变量
    当你在:Ex(也就是netrw目录浏览器)里时,Vim会自动设置一个b:netrw_curdir变量,它代表当前浏览器正在显示的目录。哪怕你在:Ex里切换了子目录,用这个变量也能准确指向当前浏览的位置:

    :e b:netrw_curdir/your_file.txt
    

为什么会出现这个问题?

简单来说,Vim的:e命令默认是相对于全局工作目录(也就是你启动Vim时所在的目录)来查找文件的,而:Ex只是打开一个目录浏览窗口,并不会自动改变全局或局部的工作目录,所以直接用:e filename就会跑到启动目录里找文件啦。

内容的提问来源于stack exchange,提问作者RiffRaffCat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:11:46