
Как запустить fzf
внутри vim
и открыть выбранный файл в разделенном окне? Я не хочу устанавливать никаких плагинов.
Я пытался
:!a=$(ls | fzf) && vsplit $a
решение1
Так как fzf
необходим доступ к консоли, вам придется запустить его как команду переднего плана, и на самом деле нет хорошего способа сделать это.иперехватывать вывод из fzf
(имя файла) в Vim через канал. Поэтому использование временного файла для хранения имени файла — самый простой подход.
Простое решение:
function! SelectFile()
let tmp = tempname()
execute '!ls | fzf >'.tmp
let fname = readfile(tmp)[0]
silent execute '!rm '.tmp
execute 'vsplit '.fname
endfunction
Затем используйте его с:
:call SelectFile()
(Или создайте сопоставление клавиш или пользовательскую команду для него.)
Использование Vim :terminal
для запуска fzf
внутри него (вместо того, чтобы тратиться на :!
) также является хорошим вариантом.
В любом случае, лучшим подходом здесь будет просто использовать один из превосходных плагинов Vim, либо простой, но базовый, который включен вфзфсам по себе и, вероятно, также более полныйfzf.vimкоторый создан на основе низкоуровневого подключаемого модуля и предоставляет мощные функции, которые вам пригодятся.