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>"
Другие вопросы по тегам