1

我的问题是关于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()被调用。

4

1 回答 1

2

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

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

映射的另一种方法是使用:help :map-expr; 这基本上:execute内置于以下变体中:map

nnoremap <expr> <leader>t ':Files ' . Guess() . "\<lt>CR>"
于 2017-11-16T13:40:20.843 回答