我的问题是vim-projectroot与fzf.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()
被调用。
答案 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>"