LazyVim快捷键中cwd与Root Dir的区别是什么?
LazyVim中cwd与Root Dir快捷键的区别
先明确两个核心概念:
- cwd(当前工作目录):Vim进程当前的工作目录,默认是你启动nvim时所在的路径,可通过
:cd命令随时切换。 - Root Dir(项目根目录):LazyVim自动识别的项目根路径,识别依据包括目录下是否存在
.git、package.json、go.mod这类项目标识文件,一旦识别后就固定不变,不受Vim内切换cwd的影响。
结合你提到的~/projects/app1目录下执行nvim .的场景,分情况说明两类快捷键的差异:
情况1:app1是标准项目(含.git等根目录标识),且未切换cwd
此时cwd和Root Dir均为~/projects/app1,两类快捷键效果完全一致:
<leader>E(cwd版)和<leader>fe(Root Dir版)打开的NeoTree都会展示~/projects/app1下的所有文件<leader>ff(Root Dir版)和<leader>fF(cwd版)的文件搜索范围都是整个~/projects/app1目录
情况2:在nvim内切换了cwd(比如执行:cd src进入~/projects/app1/src)
此时cwd变为~/projects/app1/src,但Root Dir仍保持~/projects/app1:
<leader>E打开的NeoTree仅展示~/projects/app1/src下的文件,<leader>fF的搜索范围也仅限这个子目录<leader>fe打开的NeoTree还是展示整个项目根目录的内容,<leader>ff依然搜索整个~/projects/app1下的所有文件
额外场景:启动nvim时的目录不是项目根目录
比如你在~/projects下执行nvim app1/src,此时cwd是~/projects,而Root Dir识别为~/projects/app1:
<leader>E会展示~/projects目录下的所有内容(包括其他项目文件夹)<leader>fe则直接定位到~/projects/app1的项目根目录,方便你直接操作整个项目的文件
内容的提问来源于stack exchange,提问作者WestMountain
相关产品推荐
相关产品推荐

