如何禁止Telescope.nvim打开文件时自动切换工作目录
关闭Telescope.nvim/FZF打开文件自动切换工作目录配置方案
Telescope.nvim 配置
Telescope本身默认不会主动修改全局工作目录,触发自动切目录通常是配置项冲突或者和根目录管理插件联动导致的,按以下步骤修改配置即可:
- 修改Telescope主配置块,固定picker的工作目录为全局cwd:
require('telescope').setup({ defaults = { -- 关闭可能触发路径切换的动态预览逻辑 dynamic_preview_title = false, -- 可选:强制路径显示为绝对路径,避免相对路径解析触发目录变动 path_display = { "absolute" }, }, pickers = { find_files = { -- 不单独指定picker cwd,默认继承全局工作目录 cwd = nil, }, live_grep = { cwd = nil, }, git_files = { cwd = nil, } } })
- 如果你安装了
nvim-rooter、project.nvim这类自动识别项目根目录的插件,需要同步修改这类插件的配置,避免打开文件时自动触发全局cwd切换:
-- nvim-rooter 参考配置 require('nvim-rooter').setup({ -- 改为手动触发根目录切换,打开文件不自动执行 manual = true, -- 若需要保留自动切根功能,可将cwd修改范围限制在当前标签页/窗口,不改动全局工作目录 cd_scope = "tab", })
FZF 插件配置
如果使用的是原生fzf.vim插件,添加以下配置即可锁定工作目录:
- init.vim 用户(Vimscript配置):
" 锁定fzf工作目录为初始启动目录,不随打开文件变动 let g:fzf_cwd = getcwd(-1, -1) autocmd BufEnter * let g:fzf_cwd = getcwd(-1, -1) let g:fzf_files_options = '--no-relative'
- init.lua 用户(Lua配置):
vim.g.fzf_cwd = vim.fn.getcwd(-1, -1) vim.api.nvim_create_autocmd("BufEnter", { callback = function() vim.g.fzf_cwd = vim.fn.getcwd(-1, -1) end })
配置生效验证:重启Neovim后在项目根目录启动编辑器,通过Telescope/FZF打开任意深层子目录下的文件,执行
:pwd命令查看当前工作目录,若返回值始终为启动时的项目根路径,说明配置生效。
内容的提问来源于stack exchange,提问作者Jeff Saremi
相关产品推荐
相关产品推荐

