The Vim Ctrlp Plugin memiliki cara untuk global mengabaikan nama folder tertentu. Misalnya:
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
Namun, saya memiliki aturan abaikan yang khusus untuk satu proyek. Saya ingin sesuatu yang lebih seperti .gitignore
file.
Apakah ada cara untuk mengabaikan folder tertentu dalam proyek tertentu tanpa mengubah konfigurasi global saya?
Jawaban:
Gunakan perintah daftar kustom
Ctrlp memungkinkan Anda memberi tahu perintah apa yang digunakan untuk mendapatkan daftar file di folder. Jadi, jika Anda ingin mengecualikan nama apa pun
beets.txt
, Anda dapat melakukan:Itu bersifat global, tetapi mulai mengarah ke jawaban: berikan perintah shell Anda sendiri.
Lebih baik lagi, Ctrlp memungkinkan Anda menyediakan beberapa perintah shell dengan marker, yang berarti "jika Anda melihat marker ini di direktori root, gunakan perintah ini."
Saya menemukan ini dalam
:help ctrlp
, dan sedikit dimodifikasi berdasarkan komentar penulis pada suatu masalah.Ini berarti: "Jika Anda melihat
.git
di folder, gunakangit ls-files...
. Jika tidak, jika Anda melihat.hg
, gunakanhg --cwd...
, jika tidak gunakan biasafind
."Begitu, untuk mengabaikan folder tertentu dalam satu proyek, buat sebuah perintah yang akan mengabaikan folder itu, lalu tempatkan penanda unik di proyek itu untuk membiarkan Ctrlp yang Anda ingin gunakan perintah khusus Anda di sini .
(Dalam kasus saya, saya sebenarnya ingin mengabaikan file yang ada di dalam
.gitignore
, jadigit ls-files
perintah di atas berfungsi untuk saya.)sumber
Jika Anda menggunakan backend Silver Searcher untuk CtrlP (yang jauh lebih cepat), cukup tambahkan
.agignore
file ke direktori proyek Anda dalam format yang sama dengan.gitignore
:Atau, simpan
~/.agignore
file global .Tambahkan Penelusur Perak sebagai backend dengan ini di Anda
.vimrc
sumber
if executable("ag") let g:ctrlp_user_command = 'ag %s -l --nocolor --depth 8 -g ""' endif
. Batas kedalaman berguna untuk jika saya tidak sengaja menekan ctrl-p saat mengedit file di folder rumah saya. Saya menemukan bahwa bendera tersembunyi akan menyertakan file dalam .git /Menentukan file yang sengaja dilacak dalam suatu file
Untuk mengatasi ini dengan file seperti
.gitignore
(berbasis di solusi Nathan grep), saya membuat file bernama.ctrlpignore
dan meletakkan pola yang harus diabaikan, dipisahkan oleh baris:Dan konfigurasi ctrlp saya:
Mungkin
.gitignore
itu sendiri dapat digunakan untuk mengabaikan file di ctrlp, tidak perlu membuat file baru untuk melakukan hal yang hampir sama.sumber
Seperti kata Wagner Andrade , menggunakan terpisah
.ctrlpignore
akan menjadi ide yang baik.Pengaturan vim yang lebih kuat dan nyaman adalah seperti ini:
.ctrlpignore
dapat dimasukkan ke dalam direktori apa saja yang akan dikenali sebagai direktori root oleh ctrlp. Berikut ini sebuah contoh, setiap baris dimulai dengan./
vim ~/.ctrlpignore
catatan:
grep -F
akan menafsirkan pola, mis. './.tmp', sebagai string tetap jika Anda tidak ingin './ptmp' Anda difilter. Masih ada beberapa bug sepele: './.tmp' juga akan memfilter './.tmp2'. Lupakan saja, aku tidak suka\.
g:ctrlp_custom_ignore
akan diabaikan jikag:ctrlp_user_command
diatur. Itu bisa dilakukan secara lebih kompleksg:ctrlp_user_command
daftar putih bukan daftar hitam juga dimungkinkan. Lebih nyaman jika diimplementasikan dalam skrip terpisah
sumber