vim + fzf.vim - указать корень проекта в: Файлы
Мой вопрос об использовании 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()
быть призванным.
1 ответ
Правила оценки Vim отличаются от большинства языков программирования. Вам нужно использовать :execute
для того, чтобы оценить переменную (или выражение); в противном случае это воспринимается буквально; т.е. Vim использует само имя функции в качестве аргумента.
nnoremap <leader>t :execute 'Files ' . Guess()<CR>
Альтернативой для отображений является использование :help :map-expr
; это в основном :execute
встроенный в вариант :map
:
nnoremap <expr> <leader>t ':Files ' . Guess() . "\<lt>CR>"