Sử dụng lệnh liệt kê tùy chỉnh
Ctrlp cho phép bạn nói với nó sử dụng lệnh nào để lấy danh sách các tệp trong thư mục. Vì vậy, nếu bạn muốn loại trừ bất cứ thứ gì có tên beets.txt
, bạn có thể làm:
let g:ctrlp_user_command = 'find %s -type f | grep -v "beets.txt"'
Đó là toàn cầu, nhưng nó bắt đầu hướng đến câu trả lời: cung cấp lệnh shell của riêng bạn.
Thậm chí tốt hơn, Ctrlp cho phép bạn cung cấp nhiều lệnh shell với các điểm đánh dấu, nghĩa là "nếu bạn thấy điểm đánh dấu này trong thư mục gốc, hãy sử dụng lệnh này."
Tôi đã tìm thấy điều này :help ctrlp
và đã sửa đổi một chút dựa trên nhận xét của tác giả về một vấn đề.
let g:ctrlp_user_command = {
\ 'types': {
\ 1: ['.git', 'cd %s && git ls-files --cached --exclude-standard --others'],
\ 2: ['.hg', 'hg --cwd %s locate -I .'],
\ },
\ 'fallback': 'find %s -type f'
\ }
Điều này có nghĩa là: "Nếu bạn thấy .git
trong thư mục, hãy sử dụng git ls-files...
. Nếu không, nếu bạn thấy .hg
, hãy sử dụng hg --cwd...
, nếu không hãy sử dụng thông thường find
."
Vì vậy, để bỏ qua một thư mục cụ thể trong một dự án, hãy nghĩ ra một lệnh sẽ bỏ qua thư mục đó, sau đó đặt một điểm đánh dấu duy nhất vào dự án đó để cho Ctrlp mà bạn muốn sử dụng lệnh đặc biệt của mình ở đây .
(Trong trường hợp của tôi, tôi thực sự muốn bỏ qua các tệp trong đó .gitignore
, vì vậy git ls-files
lệnh trên hoạt động với tôi.)