Saya tahu banyak orang menyimpan .vimrc mereka di GitHub untuk membuatnya lebih mudah untuk bekerja dengan mesin baru, dan itu masuk akal bagi saya. Termasuk plugin, bagaimanapun, bermasalah, karena plugin yang saya gunakan sudah git repositori. Bagaimana cara membuat repo yang akan melacak .vimrc dan plugin apa pun yang mungkin diinstal?
vimrc
plugin-system
Tom
sumber
sumber
Jawaban:
Bagaimana menangani repositori-dalam-repositori telah menjadi pertanyaan berkelanjutan dengan git. Submodules Git adalah salah satu cara mengatasi situasi, dengan mengorbankan menambahkan sedikit lebih banyak kerumitan untuk melacak. Situs git memiliki pengantar submodul .
Ide dasarnya adalah untuk menyimpan referensi ke repositori git lain yang terkait dengan path di repositori Anda. Referensi-referensi ini disimpan dalam file
.gitmodules
di root repositori Anda (yang dikelola oleh git, jadi biarkan saja). Beberapa kerumitan muncul saat kloning repo yang memiliki submodul: Anda harus secara eksplisitgit submodule init
membuat.gitmodules
file, dan kemudiangit submodule update
mengkloning submodul.Berikut ini adalah langkah-langkah tentang bagaimana saya akan menambahkan plugin vim baru ke repositori dotfiles saya (saya telah
~/.vim/
alias untuk repo ini.vim/
) menggunakan submodule:Setelah itu
submodule add
, agit status
akan menunjukkan bahwa Anda telah memodifikasi (atau membuat).gitmodules
file, dengan sesuatu seperti ini:Itu juga harus ditampilkan
.vim/bundle/vim-elixir
sebagai file baru. Git memperlakukan jalur itu secara khusus sekarang: ini adalah direktori normal pada sistem file Anda (jadi vim memuatnya secara normal), tetapigit diff
akan memperlakukannya sebagai komit khusus dari repositori. Ketika melihat diffs atau log untuk path tersebut (misalgit log -1 -u .vim/bundle/vim-elixir
), git akan menampilkannya sebagai string satu baris seperti ini:Memperbarui ke versi terbaru dari plugin terkait dengan masuk ke repositori submodule dan memeriksa komit baru, dan kemudian melakukan itu ke repositori Anda:
sumber
Anda tidak perlu menyimpan plugin di VCS Anda; Anda juga dapat menggunakan manajer paket Vim. Sejak kemarin, saya menggunakan vim-plug :
Anda dapat mendefinisikan plugin di vimrc Anda seperti:
Kemudian mulai ulang Vim, lalu instal plugin dengan:
Atau, Anda dapat menambahkan potongan ini dari FAQ ke file vimrc Anda sebelum
plug#begin()
panggilan:Ini akan memasukkan plugin
~/.vim/plugged
. Anda tidak perlu menyimpan file ini di VCS Anda . Jika Anda ingin menggunakan vimrc ini di komputer lain, panggil saja:PlugInstall
mesin itu.untuk menghapus plugin, hapus dari file vimrc dan jalankan:
Perhatikan bahwa vim-plug tidak mendukung pemasangan skrip dari situs skrip Vim, tetapi skrip-skrip tersebut dicerminkan pada GitHub , jadi tidak perlu melakukannya.
Ada juga beberapa keuntungan tambahan untuk ini seperti pembaruan plugin yang lebih mudah, dan pemuatan sesuai permintaan untuk kinerja yang lebih baik. Anda juga tidak menjalankan risiko melanggar persyaratan lisensi dari plugin yang Anda distribusikan dengan file vimrc Anda.
Lihat juga:
sumber
Saya menyimpan vimrc saya di github dan plugins sebagai submodules dari repositori saya.
Dalam file readme.md saya meletakkan satu liner yang menarik repositori kemudian menjalankan skrip setup, dengan cara ini saya bisa menyalin satu baris ke editor dan mengatur semuanya. Itu sedikit lebih dari sekedar vim (tapi tidak banyak).
https://github.com/Loki-Astari/UnixConfig
Untuk menggunakannya:
PS. Bersedia menerima saran apa pun (seperti yang saya lakukan ini berabad-abad lalu dan belum menyentuhnya sejak itu).
Catatan: Bagian favorit saya adalah mengatur git juga dan mengaturnya untuk menggunakan vim sebagai alat diff untuk git. Vimdiff adalah alat diff terbaik.
sumber
Jika Anda ingin tetap menggunakan Patogen, salah satu caranya adalah dengan menggunakan submit Git . Ketika Anda menambahkan submodule, git mengenalinya sebagai dari repositori lain dan meninggalkan isinya sendiri (kecuali jika sudah diubah, dalam hal ini, ia akan terlihat memiliki konten yang tidak terlacak saat Anda melakukannya
git status
). Jika Anda memiliki semua plugin berbasis Githubbundle/
, maka menambahkannya sebagai submodul adalah tugas yang cukup sederhana dengan shell yang bagus:Anda dapat melihat bagaimana submodules muncul di repo vimrc saya .
Jika Anda menambahkan file ke submodule, atau membuat beberapa perubahan yang tidak mempengaruhi repositori,
git status
masih akan mengeluh bahwa submodule memiliki perubahan yang tidak dikomit atau file yang tidak dilacak. Anda dapat membuat git mengabaikan perubahan tersebut dengan menambahkanignore = dirty
ke konfigurasi submodule dalam.gitmodules
file. Sebagai contoh:Salah satu manfaat dari submodula adalah bahwa revisi dari submodule ditambahkan ke repositori git, sehingga secara
git init
otomatis mengurus memeriksa revisi tertentu. Anda dapat membuangnya dan memberi tahu git untuk mengabaikan submodul setelah Anda menambahkannya dengan menambahkanignore = all
konfigurasi mereka dalam.gitmodules
file. Sebagai contoh:Terakhir, satu perintah untuk memperbarui semuanya!
Peringatan: Saya baru mengenal submodul. Saya tidak begitu yakin bagaimana mereka berperilaku.
sumber
Anda bisa menambahkan baris ini ke Anda
.gitignore
untuk mengabaikan semua plugin Anda dan tidak melakukannya:Juga, Anda mengatakan itu bermasalah karena akan memasukkan kode plugin karena mereka sudah repo github. Saya kira maksud Anda adalah bahwa Anda tidak ingin menggandakan kode, tetapi saya telah mendengarnya mengatakan bahwa Anda harus melanjutkan dan menduplikasi kode yang merupakan ketergantungan sehingga Anda selalu dapat kembali ke titik tertentu dalam kode Anda dan tahu bahwa ini akan bekerja. Berikut adalah beberapa artikel oleh James Shore yang berbicara tentang itu: http://www.letscodejavascript.com/v3/blog/2014/12/the_r reliable_build , http://www.letscodejavascript.com/v3/blog/2014/03/ the_npm_debacle . Dia berbicara tentang kode pemrograman dan npm (sebagai lawan dari vim), tapi saya pikir argumennya masih berlaku, Anda ingin lingkungan yang dapat diandalkan untuk kode atau menulis.
sumber