vim+;fzf.vim-在:文件中指定项目根目录

vim+;fzf.vim-在:文件中指定项目根目录,vim,fzf,Vim,Fzf,我的问题是关于with的用法 我有一个键映射,它在项目根目录下打开:Files,如下所示 function Guess() return projectroot#guess() endfunction nnoremap <leader>t :Files Guess()<CR> nnoremap t:ProjectRootExe文件 但问题是它干扰了set autochdir。除非我使用:e/:sp/:vsp强制新会话,否则当前目录将保持与以前的目录相同 因此,我考

我的问题是关于with的用法

我有一个键映射,它在项目根目录下打开
:Files
,如下所示

function Guess()
  return projectroot#guess()
endfunction

nnoremap <leader>t :Files Guess()<CR>
nnoremap t:ProjectRootExe文件

但问题是它干扰了
set autochdir
。除非我使用
:e/:sp/:vsp
强制新会话,否则当前目录将保持与以前的目录相同

因此,我考虑将directory作为
:Files path的第二个参数,如下所示

function Guess()
  return projectroot#guess()
endfunction

nnoremap <leader>t :Files Guess()<CR>
函数猜测()
返回projectroot#guess()
端功能
nnoremap t:Files Guess()
但是由于一些我无法理解的明显原因,我无法让这个用法正常工作。如何在vim映射中指定它应该将命令与函数输出相结合


我想要的是
:要调用的_Guess()
的文件输出。

Vim的求值规则与大多数编程语言不同。您需要使用
:执行
,以计算变量(或表达式);否则,它是字面意义上的;i、 Vim使用函数名本身作为参数

nnoremap <leader>t :execute 'Files ' . Guess()<CR>

这就是我最后使用的
nnoremap t:execute'Files'ProjectRootGuess()
进行grepping的原因,我使用的是从fzf.vim
命令中的一个问题中获得的-nargs=*Rag\call fzf#vim#ag(,extend(s:with_git_root(),{'down':'~40%}))