Bagaimana cara menentukan pengaturan Vim untuk semua file di bawah direktori saat ini?
Solusi ideal adalah jika Vim mencari dan membaca .vimrc di direktori saat ini sebelum mencari ~ / .vimrc, dan menerapkan pengaturan di sana untuk keseluruhan struktur.
Saya telah melihat plugin , tetapi ini berarti pengaturan yang diterapkan tidak transparan karena mereka memerlukan plugin untuk diinstal. Sebaliknya, modeline transparan karena terlepas dari vimrc pengguna atau pemanggilan vim tertentu, pengaturan modeline akan diterapkan untuk file itu.
Hal yang saya coba adalah
- menempatkan .vimrc di direktori kerja
:so vimrc
di modeline.
Saya kira keduanya tidak bekerja untuk alasan keamanan. Saya tidak membutuhkan kekuatan penuh dari vimrc; terikat ke pengaturan yang dapat diterima oleh modeline sudah cukup. Tujuan saya adalah memudahkan vimmers untuk mengadopsi standar pengkodean dalam sebuah proyek.
Jawaban:
Saya penganjur cara plugin . Untuk beberapa alasan:
BTW, solusi sth dapat digunakan untuk sumber file konfigurasi tunggal. Ini sangat mirip dengan pendekatan plugin kecuali .vimrc harus dipasit dengan opsi non global, dan tidak mendukung banyak file konfigurasi / bersama dengan mudah.
sumber
Anda bisa memasukkan sesuatu seperti ini
$VIM/vimrc
sumber
Saya sangat menyarankan untuk tidak menggunakan
set exrc
Bahkan dengan
set secure
, di bawah * nix, vim masih akan menjalankan perintah otomatis, shell, dkk, jika Anda memiliki file tersebut. Jadi jika Anda senang mengedit file di tarball itu saya mengirimi Anda dengan yang.vimrc
berisi:Anda mungkin tidak akan terlalu senang dibandingkan saya.
sumber
Pertanyaan ini sudah lama, tetapi sepertinya kekhawatiran yang cukup alami dan terus-menerus.
Solusi saya cukup sederhana. Saya menempatkan
.vimrc
file di direktori root proyek saya. Baris pertama.vimrc
file biasanya sumber~/.vimrc
, dan kemudian menambahkan konfigurasi tertentu yang saya inginkan. Saya aliastvim='vim -u .vimrc'
, dan digunakantvim
dalam direktori proyek pribadi saya. "tvim" untuk "vim tepercaya", artinya jika saya menjalankannya di direktori dengan.vimrc
file dan terjadi kesalahan, saya tidak menyalahkan siapa-siapa selain diri saya sendiri, karena saya secara eksplisit mengatakan bahwa saya mempercayainya. Juga, saya menyimpan sekelompok ini disimpan sehingga saya kadang-kadang dapat hanya melakukan softlink yang saya inginkan untuk jenis proyek tertentu.sumber
source $HOME/.vimrc
dari lokal saya.vimrc
, Vim mengeluh tidak dapat menemukan plugin yang diinstal di seluruh sistem saya (patogen dalam kasus ini;execute pathogen#infect()
perintah di atas saya$HOME/.vimrc
gagal denganUnknown function ...
). Bagaimana cara memperbaikinya?Menempatkan .vimrc di direktori kerja sebenarnya didukung, hanya dinonaktifkan secara default. Lihat
:h 'exrc'
dan:h startup
untuk detailnya, pengaturan'exrc'
akan memungkinkan membaca.vimrc
dari direktori saat ini.Ini juga disarankan
:set secure
saat menggunakan ini. Ini mengunci:autocmd
, shell, dan menulis perintah.vimrc
di direktori saat ini.Hal lain yang mungkin perlu diperhatikan adalah menyiapkan sesi (
:h session
) dengan tampilan standar dan pengaturan untuk proyek tersebut.Semua yang dikatakan, saya mungkin akan menggunakan opsi plugin yang dirinci oleh Luc Hermitte sendiri.
sumber
Untuk meminimalkan risiko keamanan dengan fitur "autorun" APA PUN untuk APA SAJA saat ini, bolehkah saya menyarankan Anda untuk menggunakan fitur vim yang sudah ada alih-alih plugin (bagasi portabilitas)?
Misalnya.
File vimrc folder lokal saya bernama "_gvimrc" (sengaja). Ini mengurangi harapan bagi orang-orang seperti phen untuk menghibur dirinya sendiri atas biaya kita. :-)
Di file $ VIM / .vimrc saya, saya memasukkan:
pada akhirnya.
Saya menggunakan "filereadable ()" di atas "fileexists ()" karena nanti memiliki beberapa keanehan ketika disiksa dengan membuka beberapa (10+) file secara bersamaan, (tidak yakin mengapa).
Tentu saja, Anda dapat memberikan nama file unik Anda sendiri untuk mengaburkan pembuat masalah potensial lebih lanjut. Seperti "_mygvimrc", "_gobbledygook", dll. Anda hanya perlu menentukan satu nama standar dan sumber sesuai dengan itu di $ VIM / .vimrc Anda. Mengandalkan internal vi / vim untuk mengesampingkan masalah portabilitas. TAPI, JANGAN beri nama .vimrc (atau _vimrc) untuk mencegah sumber rekursif jika Anda mengedit file $ VIM / .vimrc dengan vim nanti.
Telah menggunakan ini sejak Windoze 98SE, melalui Windork XP Pro, dan sekarang Windorkier 7 (5+ tahun sudah). Saya akan menandai daftar file .txt di Explorer dan kemudian menggunakan "Edit with multiple Vim", menghasilkan beberapa jendela vim yang terbuka secara bersamaan. Untuk pekerjaan saya, saya melakukan ini beberapa kali sehari, setiap hari. Semua file diperlakukan dengan apa yang saya tetapkan di _gvimrc lokal saya.
sumber
Dengan asumsi orang tidak menambahkan file setiap beberapa hari, Anda mungkin dapat menambahkan modeline di bagian atas setiap file. Faktanya, jika sistem kontrol versi Anda mengizinkannya, Anda mungkin dapat menerapkan aturan yang mengatakan bahwa setiap file harus memiliki modeline saat check in.
sumber
Saya setuju dengan pendekatan plugin untuk alasan keamanan.
Ada plugin yang sangat bagus yang belum disebutkan. Ini memungkinkan Anda menggunakan a
.lvimrc
di direktori proyek Anda.Coba "localvimrc":
http://www.vim.org/scripts/script.php?script_id=441
https://github.com/embear/vim-localvimrc
sumber
Gunakan "editorconfig"
Jika jenis standar pengkodean yang ingin Anda terapkan terkait dengan gaya indentasi, ukuran tab, format file, dan rangkaian karakter, Anda mungkin ingin melihat "editorconfig" , yang merupakan standar editor silang untuk menentukan jenis pengaturan ini di proyek tertentu, dan minta semua editor mengikuti konfigurasi itu.
Spesifikasi "editorconfig" memungkinkan proyek meminta pengaturan berbeda bergantung pada ekstensi file atau nama dalam proyek. (Jadi Anda dapat memiliki Makefile menggunakan TAB, skrip Python Anda menggunakan 4 spasi dan skrip shell Anda menggunakan 2 spasi untuk indentasi.)
Anda membutuhkan plug-in untuk menggunakan "editorconfig" di Vim. Situs web resminya menyediakan satu, tetapi secara pribadi saya akan merekomendasikan sgur / vim-editorconfig , yang ditulis dalam Vimscript murni, jadi Anda tidak perlu terlalu khawatir tentang ketergantungan eksternal terlalu banyak.
Karena "editorconfig" bertujuan untuk kompatibilitas lintas editor, ini sangat terbatas dalam apa yang dilakukannya, jadi jika Anda menginginkan spasi kosong yang konsisten, format file (DOS vs. Unix) dan pengkodean (Unicode utf-8, dll.), Maka "editorconfig " adalah untukmu.
sumber
Coba vim-localrc
https://github.com/thinca/vim-localrc/blob/master/doc/localrc.txt
sumber
Saya melihat plugin yang ada dan tidak benar-benar menyukainya, jadi saya menulis fungsi sederhana yang mendukung vim-fugitive . Keuntungan dari ini adalah ia mengetahui bahwa root proyek selalu merupakan root dari repositori, dan sebagai tambahan saya dapat melakukan hash file untuk menyimpan tabel kepercayaan. Letakkan saja yang berikut ini di
.vimrc
file Anda .Jika
!
opsi disetel padaviminfo
pengaturan, makaSAFE_VIMRC
kamus akan dipertahankan di antara proses (perhatikan^
untuk menambahkan opsi agar tidak mengacaukann
opsi).sumber