Wtyczki Vim Ctrlp ma sposób aby globalnie ignorować niektóre nazwy folderów. Na przykład:
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
Mam jednak zasadę ignorowania, która jest specyficzna dla jednego projektu. Chciałbym coś bardziej jak .gitignore
plik.
Czy istnieje sposób zignorowania określonego folderu w konkretnym projekcie bez zmiany mojej konfiguracji globalnej?
Odpowiedzi:
Użyj niestandardowego polecenia na liście
Ctrlp pozwala ci powiedzieć, jakiego polecenia użyć, aby uzyskać listę plików w folderze. Więc jeśli chcesz wykluczyć coś nazwanego
beets.txt
, możesz:Jest to globalne, ale zaczyna wskazywać odpowiedź: podaj własne polecenie powłoki.
Co więcej, Ctrlp pozwala na dostarczanie wielu poleceń powłoki ze znacznikami, co oznacza „jeśli zobaczysz ten znacznik w katalogu głównym, użyj tego polecenia”.
Znalazłem to
:help ctrlp
i nieznacznie zmodyfikowałem na podstawie komentarza autora do problemu.Oznacza to: „Jeśli widzisz
.git
w folderze, użyjgit ls-files...
. W przeciwnym razie, jeśli widzisz.hg
, użyjhg --cwd...
, w przeciwnym razie użyj zwykłegofind
”.Tak więc, aby zignorować określony folder w jednym projekcie, opracuj polecenie, które zignoruje ten folder, a następnie umieść unikalny znacznik w tym projekcie, aby umożliwić Ctrlp, że chcesz użyć tutaj specjalnego polecenia .
(W moim przypadku naprawdę chciałem zignorować pliki, które tam były
.gitignore
, więcgit ls-files
powyższe polecenie działa dla mnie).źródło
Jeśli używasz zaplecza Silver Searchera dla CtrlP (który jest znacznie szybszy), po prostu dodaj
.agignore
plik do katalogu projektu w tym samym formacie, co.gitignore
:Alternatywnie, zachowaj
~/.agignore
plik globalny .Dodaj Silver Searchera jako backend z tym w swoim
.vimrc
źródło
if executable("ag") let g:ctrlp_user_command = 'ag %s -l --nocolor --depth 8 -g ""' endif
. Limit głębokości jest przydatny, jeśli przypadkowo wcisnę ctrl-p podczas edycji pliku w folderze domowym. Odkryłem, że ukryta flaga będzie zawierać pliki w .git /Określa celowo nieśledzone pliki w pliku
Aby rozwiązać ten problem za pomocą pliku typu
.gitignore
(oparty na rozwiązaniu Nathan grep), utworzyłem plik o nazwie.ctrlpignore
i umieściłem wzorce, które należy zignorować, oddzielając je liniami:I moja konfiguracja ctrlp:
Być może
.gitignore
sam może zostać użyty do zignorowania plików w ctrlp, bez potrzeby tworzenia nowego pliku, aby zrobić prawie to samo.źródło
Jak powiedział Wagner Andrade ,
.ctrlpignore
dobrym pomysłem byłoby użycie oddzielnego .Bardziej niezawodne i wygodne ustawienie vima wygląda następująco:
.ctrlpignore
można umieścić w dowolnym katalogu, który zostałby rozpoznany jako katalog główny przez ctrlp. Oto przykład, od którego zaczyna się każda linia./
vim ~/.ctrlpignore
Uwaga:
grep -F
zinterpretuje wzór, np. „./.tmp”, jako stały ciąg znaków, jeśli nie chcesz, aby filtr „./ptmp” został odfiltrowany. Wciąż są trywialne błędy: „./.tmp” również odfiltruje „./.tmp2”. Zapomnij, nie lubię\.
g:ctrlp_custom_ignore
zostanie zignorowany, jeślig:ctrlp_user_command
jest ustawiony. Można to zrobić w bardziej złożony sposóbg:ctrlp_user_command
możliwa jest również biała lista zamiast czarnej listy. Bardziej wygodne, jeśli zostało zaimplementowane w osobnym skrypcie
źródło