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

    Ich möchte ag (Silber Sucher) mit Ctrlp und Vim verwenden. Ich habe dies in meinem .vimrc:Verwenden Sie ag in 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/* 
    

    I ctrlp versteckte Dateien einschließen möchten aber die versteckt sind. Wenn ich den ag-Befehl -u hinzufüge, zeigt es alle versteckten Dateien an, respektiert jedoch nicht den Wildignore oder .gitignore. Ist es möglich, dass sie diese respektieren?

    +0

    Kann ich mit meiner Antwort Ihr Problem lösen? oder benötigen Sie zusätzliche Informationen? – mcanfield

    +0

    Es ist sicher! Haben Sie vergessen, Ihre Antwort als akzeptiert zu markieren, tut mir leid. Vielen Dank! – Richard

    Antwort

    34

    Wenn Sie einen benutzerdefinierten Finder über ctrlp_user_command mehrere Optionen verwenden, einschließlich ctrlp_show_hiddenctrlp_custom_ignore und wildignore Mustern des vim, nicht durch CtrlP (see documentation) verwendet.

    g: ctrlp_show_hidden

    ...

    Hinweis: gilt nicht, wenn ein Befehl mit definiert | g: ctrlp_user_command | wird benutzt.

    g: ctrlp_custom_ignore

    ...

    Hinweis # 1: standardmäßig | wildignore | und | g: ctrlp_custom_ignore | Nur gilt, wenn | globpath() | wird verwendet, um nach Dateien zu suchen, daher gelten diese Optionen nicht, wenn ein Befehl mit | g: ctrlp_user_command | definiert wurde wird verwendet.

    So sind Sie auf die Gnade Ihrer Suche Werkzeug, in diesem Fall, ag. Glücklicherweise können Sie ein paar Dinge tun, die Ihnen das gewünschte Verhalten geben sollten.

    Ihre verborgenen dotfiles Um zu erscheinen, aber immer noch ignore Dateien respektieren, verwenden Sie die --hidden Option für ag:

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

    Jetzt Muster zu definieren, zu ignorieren, können Sie ag eigene ignorieren .agignore Datei verwenden. Dies kann ein pro Verzeichnis oder ein globales sein, das ag bei jedem Lauf überprüft. Sie platzieren das in Ihrem Haus dir ~/.agignore.

    Ich verstehe, dass es nett sein kann, vims wildignore passen Sie auf Muster auf, aber mit .agignore erhalten Sie den Bonus dieser Beschränkungen, wenn Sie AG vom CLI verwenden. Wenn Sie alle Dateien durchsuchen möchten, verwenden Sie einfach den Befehl ag -u, den Sie erwähnten, um alle ignore Dateien zu umgehen.

    Als letzten Leckerbissen gibt es ein Dictionary-Format, das Sie verwenden können, um g:ctrlp_user_command zu definieren, das einen ignore-Schlüssel enthält, der CtrlP wildignore Muster verwenden wird. Ich habe dies jedoch noch nie ausprobiert und die Dokumentation weist auf einen möglichen Leistungseinbruch hin. Sie können diese Methode versuchen, wenn Sie meine andere vorgeschlagene Lösung nicht mögen (see documentation).

    Hinweis # 3: es sei denn, das | Wörterbuch | Format verwendet wird und "ignorieren" ist definiert und auf 1, die | Wildignore | und | g: ctrlp_custom_ignore | Optionen gelten nicht, wenn diese benutzerdefinierten Befehle verwendet werden.Wenn nicht vorhanden ist, wird 'ignore' standardmäßig auf 0 gesetzt, um die Leistung Vorteil der Verwendung von externen Befehlen beizubehalten.

    Verwandte Themen