vim
  • ctrlp
  • 2013-08-17 2 views 19 likes 
    19

    Я хочу использовать ag (серебряный искатель) с ctrlp и vim. у меня есть это в моем .vimrc:Использовать ag в ctrlp + vim

    if executable("ag") 
        set grepprg=ag\ --nogroup\ --nocolor 
        let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' 
    endif 
    
    let g:ctrlp_show_hidden = 1 
    
    set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*/.tmp/*,*/.sass-cache/*,*/node_modules/*,*.keep,*.DS_Store,*/.git/* 
    

    Я хочу ctrlp включить скрытые файлы, но те, которые скрыты. Если я добавлю -u в команду ag, он отобразит все скрытые файлы, но не будет уважать wildignore или .gitignore. Можно ли это уважать?

    +0

    Отвечает ли мой ответ на вашу проблему? или вам нужна дополнительная информация? – mcanfield

    +0

    Это точно! Забыл отметить ваш ответ как принято, извините за это. Большое спасибо! – Richard

    ответ

    34

    Если вы используете пользовательский искатель через ctrlp_user_command несколько вариантов, в том числе ctrlp_show_hiddenctrlp_custom_ignore и wildignore моделей VIM, в которые не используются CtrlP (see documentation).

    г: ctrlp_show_hidden

    ...

    Примечание: не применяется, когда команда определяется с | г: ctrlp_user_command | используется.

    г: ctrlp_custom_ignore

    ...

    Примечание # 1: по умолчанию | wildignore | и | g: ctrlp_custom_ignore | только применяется, когда | globpath() | используется для сканирования файлов, поэтому эти параметры не применяются, когда команда, определенная с помощью | g: ctrlp_user_command | есть используется.

    Таким образом, вы остаетесь на милость своего поискового инструмента, в данном случае, ag. К счастью, вы можете сделать пару вещей, которые должны дать вам поведение, которое вы хотите.

    Чтобы получить ваши скрытые точечные файлы появляться, но по-прежнему уважать ignore файлов, используйте опцию --hidden для ая:

    let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'

    Теперь для определения шаблонов, чтобы игнорировать, вы можете использовать AG собственных игнорировать файл .agignore. Это может быть каталог или глобальный, который будет проверяться при каждом запуске. Вы помещаете это в свой домашний каталог ~/.agignore.

    Я понимаю, что может быть приятно иметь vims wildignore позаботиться о шаблонах, но с .agignore вы получаете бонус этих ограничений при использовании ag из cli. Если вы хотите искать все файлы, просто используйте команду ag -u, которую вы упомянули, чтобы обойти любые файлы ignore.

    В качестве окончательного словаря есть формат словаря, который вы можете использовать для определения g:ctrlp_user_command, который содержит ключ ignore, который заставит CtrlP использовать шаблоны wildignore. Тем не менее, я никогда не пробовал это, и в документации указывается потенциальный удар производительности. Вы можете попробовать этот метод, если вам не нравится мое другое предлагаемое решение (see documentation).

    Примечание № 3: если только Словарь | формат, а «ignore» - , заданный и установленный в 1, | wildignore | и | g: ctrlp_custom_ignore | Параметры не применяются, когда эти пользовательские команды используются.Когда нет, по умолчанию «ignore» устанавливается в 0, чтобы сохранить преимущество в использовании внешних команд.

     Смежные вопросы

    • Нет связанных вопросов^_^