Baru-baru ini saya menyadari bahwa panjang saya vimrc
sekarang lebih dari 400 baris (yang IMO terlalu banyak akan saya coba kurangi) dan untuk membuatnya lebih mudah dinavigasi, membaca dan mengeditnya saya memutuskan untuk menyelidiki konsep lipat dalam vim (yang Saya tidak terbiasa dengan) .
- Saya mencoba untuk mengatur metode lipat
indent
tetapi saya tidak suka hasilnya (Itu terlalu berantakan karena sebagian besar dari sayavimrc
tidak benar-benar menjorok). - Saya juga mencoba untuk set
foldmethod
keexpr
dansyntax
tapi aku tidak bisa melipat sesuatu dengan benar. - Di sini menggunakan
diff
metode melipat sepertinya tidak relevan. (Atau jika itu saya tidak mengerti bagaimana menggunakannya) - Jadi untuk saat ini saya menggunakan
marker
metode yang tidak sepenuhnya memuaskan saya karena tanda"{{{
dan"}}}
yang saya temukan "berisik" dalam file.
Jadi saya ingin tahu apakah ada praktik terbaik atau pedoman umum tentang melipat dengan benar avimrc
.
Catatan 1: Seperti kita semua tahu, SO bukan forum dan tidak dibuat untuk mengumpulkan pendapat pribadi dan bukan itu yang saya cari: tentu saja saya kira beberapa orang memiliki preferensi mereka, tetapi saya ingin tahu mengapa menggunakan spidol (misalnya) meningkatkan keterbacaan lebih dari menggunakan indentasi.
Catatan 2: Juga tujuan utama saya adalah untuk membuat vimrc
sejelas mungkin saya jadi jika praktik terbaik lain ada untuk membuat yang bagus vimrc
saya ingin tahu tentang hal itu.
Sunting 1: Saya seharusnya tahu bahwa saya vimrc
sudah dibagi dalam beberapa bagian (dan kadang-kadang subbagian) yang utama
- pilihan umum
- plugins (berisi subbagian untuk setiap plugin dan konfigurasinya)
- pemetaan
- navigasi (juga berisi ayat)
- warna
- dll ...
Dan struktur inilah yang membuat saya berpikir untuk melipat: Saya merasa hanya bisa menampilkan bagian yang saya minati pada titik tertentu adalah sesuatu yang cukup nyaman.
Sunting 2: Menjawab menyebutkan subdivisi vimrc
dalam beberapa file adalah valid, tetapi sebagai preferensi pribadi saya lebih suka menggunakan pelipatan karena saya pikir lebih mudah untuk mempertahankan hanya satu file dalam git repo yang berisi dotfile saya. Itu hanya preferensi pribadi dan saya sadar bahwa mungkin juga menggunakan pendekatan ini, tetapi saya lebih suka menggunakan lipat.
"{{{
yang paling 'vim like' dalam melakukan sesuatu, plugin solarized menggunakan ini dan meskipun mungkin berisik itu memberi Anda cara paling standar untuk mengatur lipatan manualJawaban:
Saya memiliki modelines berikut di bagian bawah
vimrc
yang saya salin dari godlygeek, penulis tabel :Ini akan membuat garis apa pun dimulai dengan
"
lipatan 2+ . Semakin banyak"
lipatan semakin dalam. Ini memungkinkan Anda untuk membagi bagian jika perlu.sumber
>extra number of "
(level awal yang diduduki oleh angka setelah <pada baris ini) atau'='
(gunakan level baris sebelumnya), artinya dapat ditemukan difold-expr
Sebaiknya tentukan kategori Anda sendiri di
.vimrc
(seperti daftar dengan sublists dan subsublists) dan tambahkan semua plugin / pengaturan / fungsi Anda ke kategori masing-masing. Dikombinasikan dengan lipat khusus, ini bisa bekerja dengan baik:Contoh di atas menunjukkan kemungkinan kategori yang menurut saya bermanfaat untuk menyusun
.vimrc
. Ini menggunakan pengaturan lipatan yang disesuaikan berikut ini:Untuk menentukan kategori dan subkategori Anda sendiri, gunakan sintaks berikut:
Kategori tingkat atas dapat dibuat dengan sangat mudah jika Anda menggunakan vim-snippet (mis. Dengan UltiSnips ): Cukup rentangkan
box
ataubbox
snippet yang disediakan oleh vim-snippet (tulisbox
ataubbox
tekan peluas pemicu).Untuk beralih lipatan terbuka dan tertutup lebih cepat dengan menekan spasi dua kali:
Dengan begitu Anda memiliki struktur
.vimrc
yang baik yang dapat dinavigasi dengan mudah.sumber
Saya menggunakan primer saya
vimrc
sebagai tautan ke beberapa file yang dikategorikan lainnya, sumber masing-masing saat berjalan, misalnya opsi Vim dalam satu file, pengaturan plugin di yang lain.Sebagai jawaban yang lebih langsung untuk pertanyaan OP, saya menggunakan metode marker, tetapi ke sisi kanan dengan spasi, dan sekitar lebih banyak kategori daripada individu, untuk sebagian besar. Saya melakukan masing-masing plugin secara terpisah.
sumber
vimrc
dalam file yang berbeda karena (IMO) itu meningkatkan kompleksitas dan membuatnya lebih sulit untuk dipertahankan. Tentang lipatan, apa yang Anda maksud dengan "pergi ke sisi kanan dengan jarak"?" {{{
dengan banyak ruang di sanatextwidth
sehingga Anda penanda di dekat tepi kanan. Saya juga memiliki fungsi FoldText yang dipersonalisasi dalam file folding.vim. Saya lebih suka file terpisah sehingga git saya repo hanya satu jenis mod khusus per komit.Anda dapat mengatakan bahwa "praktik terbaik" adalah masalah pendapat, :) tetapi ada dua pendekatan yang (1) masuk akal, dan (2) dapat diterapkan ke semua file konfigurasi, tidak hanya Vim: melipat oleh bagian logis dan subbagian (atau bahkan lebih dalam, jika Anda merasa berani), dan membelah konfigurasi Anda menjadi beberapa file yang lebih kecil dan menyimpannya
:source
.Saya pribadi lebih suka melipat karena membuat hal-hal lebih mudah diakses, sambil tetap memberi saya beberapa hierarki untuk diambil. Fungsi lipat dan
autocmd
s pada level terdalam juga merupakan ide yang baik, karena ini membuat unit logis "alami".marker
melipat paling masuk akal untuk semua ini, karena hierarki logis tidak harus tercermin ke dalam level indent, atau ke dalam penyorotan sintaksis. Saya juga meningkatfoldcolumn
, yang memberi saya petunjuk visual tentang keberadaan saya:Di samping catatan,
foldtext
fungsi ini (modifikasi dari fungsi yang sama oleh Drew Neil, IIRC) lebih masuk akal bagi saya daripada default:Dengan pendekatan lain, membagi file, masalah utama adalah menemukan sesuatu, dan beralih dari satu file ke yang lain. Cara yang sangat baik untuk mengatasi keduanya adalah dengan menggunakan plugin seperti CtrlSF , CtrlP , atau yang serupa. Tapi Anda mungkin sudah menggunakan salah satu dari itu.
sumber
marker
. Memang menyesuaikanfoldcolumn
adalah hal yang baik untuk dilakukan, saya akan melihat nilai mana yang paling sesuai dengan kebutuhan saya. Saya juga membagikan pandangan Anda tentang file-file yang dibagi tetapi saya tidak tahuCtrlSF
saya akan melihatnya meskipun saya cukup senangCtrlP
.fdm
untukfoldtext
danMyFoldText()
tapi sepertinya itu bukan cara yang tepat untuk menggunakannya.CtrlSF
berfungsi paling baik dengan ag atau ack , yang pada dasarnya adalah versi khususgrep
.foldtext
bukan metode pelipatan khusus, tetapi fungsi untuk mengubah cara tampilan teks yang dilipat. Baris terakhir dalam acara potongan saya bagaimana itu digunakan:set foldtext=MyFoldText()
.Praktik terbaik dasar:
Membagi menjadi beberapa bagian:
Komentar setiap bagian / rebind
(Cadangkan Anda
.vimrc
atau_vimrc
di Github)Hanya preferensi pribadi saya. Mungkin tidak banyak membantu.
sumber
Terinspirasi oleh jawaban @ PeterRincker , saya membuat yang berikut untuk menggunakan header gaya ATX. Tambahkan ke akhir
.vimrc
sumber
Jika Anda memiliki fungsi besar seperti saya, Anda dapat menggunakan ini untuk melipat fungsi Anda:
Dan tambahkan modeline ini ke vimrc Anda:
sumber
Memperluas gagasan @Peter Rincker dan @ go2null. Jika Anda tidak ingin mengatur opsi lipat di Vim modeline. Anda dapat menggunakan autocmd berikut untuk mengatur metode lipat dan ekspresi lipat.
Saya membuat modifikasi kecil untuk membuat jawaban asli agar berfungsi sebagai perintah vim biasa (tidak perlu melarikan diri dari titik dua, tetapi kutipan ganda perlu diloloskan).
Jika Anda tidak menyukai
foldexpr
string yang panjang , kami dapat mendefinisikan fungsi untuk itu:Kemudian ganti baris autocmd yang
foldexpr
akansumber