Сделав еще чтение , я нашел способ интегрировать fzf-mark в vim (который также прекрасно работает без fzf-mark).
Все вам нужен файл со списком каталогов с закладками, на который указывает переменная, например FZF_MARKS_FILE="${HOME}/.fzf-marks
Этот файл отформатирован следующим образом: cat $FZF_MARKS_FILE
:
project1 : /home/user/project1/code
project2 : /home/user/project2/code
vimswapdir : /home/user/.local/share/nvim/swap
rlibsloc : /home/user/R/x86_64-pc-linux-gnu-library
trash : /home/user/.local/share/Trash/files
vim-plugins : /home/user/.config/nvim/plugged
Идея теперь такова загрузить и проанализировать его аналогично тому, как это сделано в fzf-marks функция перехода , и сделать его нечетким для быстрого поиска, определяя функцию FM
:
command! -bang FM call fzf#run(fzf#wrap({'source': 'cat ~/.fzf-marks | sed "s/.*: \(.*\)$/\1/" | sed "s#~#${HOME}#"', 'sink': 'lcd'}, <bang>0))
вызов :FM
теперь всплывает окно fzf с каталогами с закладками для выбора.
Вариант использования (который я часто нахожу сам):
Скажем, я где-то начал редактировать файл (скажем, в * 1023) *), но нужно было найти (:grep
) предложение, содержащее слово foo
, которое, как я знаю, находится в файле в /home/user/project1/code
. Я никогда не могу вспомнить путь project1, просто он имеет code
на своем пути. По этой причине я добавил его в закладки (см. Выше).
Раньше приходилось где-то искать путь и вводить его в vim, т.е. набирать :grep foo /home/user/project1/code
. Теперь это работает быстрее следующим образом:
:FM
в vim, вызывая список каталогов с закладками, печатая биты code
, например, co
, быстро ограничивает поиск:
выбор первой строки устанавливает текущий каталог на project1
(что можно подтвердить с помощью :pwd
), но оставляет отредактированный файл без изменений. Теперь :grep! foo
действительно выполняет рекурсивный поиск в проекте 1.
Закончив поиск, я могу сбросить рабочий каталог на текущий файл dir :cd %:h
или root с rooter : :Rooter
.