Как искать текст в файле определенного типа / расширения в vim с помощью FZF и Ag?

Я недавно начал использовать vim и какое-то время играл с ним.

я использую FZF с Agчтобы выполнить поиск файлов и поиск в файлах. но я не могу искать файлы определенных типов, например

я хочу поискать "getUserInfo" только в .js файлы.

вот мои конфиги

bashrc

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
export FZF_DEFAULT_COMMAND='ag -g ""'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"

init.vim

Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'

я просто использую :Ag в vim для поиска по всему каталогу

3 ответа

Вы можете использовать --js чтобы ограничить поиск файлами JavaScript:

$ ag getUserInfo --js

Видеть $ man ag.

Чтобы использовать поиск по типу файла с помощью FZF, вам необходимо добавить индивидуальную конфигурацию в ваш .vimrc. Например, если вы хотите искать только файлы javascript, вы добавляете это:

      autocmd! VimEnter * command! -nargs=* -complete=file AgJS :call fzf#vim#ag_raw('--js '. <q-args> .' ~/myRepo/src/')

Обратите внимание на спецификацию каталога (~ / myRepo / src /). Чтобы вызвать такой поиск, вы должны использовать :AgJSкоманда. Эта команда, в свою очередь, может быть привязана к другому отображению.

Настройка обсуждается в документации плагина: https://github.com/junegunn/fzf.vim#example-customizing-files-command

Ваш конкретный запрос функции обсуждался в проблеме: https://github.com/junegunn/fzf.vim/issues/92

Оба других ответа не сработали для меня, после того, как я раскопал связанные проблемы с тем, который связал Грегори, я нашел решение, которое сработало для меня:

      let s:ag_options = ' --python '

command! -bang -nargs=* Agpy call fzf#vim#ag(<qargs>,s:ag_options,<bang>0)

Если вы напечатаете

      ag --list-file-types

В терминале вы можете определить, чем заменить --python в приведенном выше примере, чтобы захватить правильный тип файла.

Наконец, вы просто набираете: Agpy или как вы там называете команду в vim для выполнения.

Это также выполняется в любом текущем рабочем каталоге, что предпочтительнее, чем только фиксированный каталог в другом примере.

Другие вопросы по тегам