vim + fzf.vim - 在:Files中指定项目根目录

时间:2017-11-15 20:22:03

标签: vim fzf

我的问题是vim-projectrootfzf.vim

的使用情况

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

nnoremap <leader>t :ProjectRootExe Files<CR>

但问题是它干扰set autochdir。除非我强制使用:e/:sp/:vsp当前目录的新会话与上一个目录保持一致。

所以我想把目录作为第二个参数传递给:Files path,就像这样

function Guess()
  return projectroot#guess()
endfunction

nnoremap <leader>t :Files Guess()<CR>

但是由于显而易见的原因,我无法弄清楚我无法使用。如何在vim映射中指定它应该将命令与函数的输出结合起来?

我想要的是:Files output_of_Guess()被调用。

1 个答案:

答案 0 :(得分:2)

Vim的评估规则与大多数编程语言不同。您需要使用:execute来评估变量(或表达式);否则,它按字面意思;即Vim使用函数名称本身作为参数。

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

映射的替代方法是使用:help :map-expr;基本:execute内置:map的变体:

nnoremap <expr> <leader>t ':Files ' . Guess() . "\<lt>CR>"