Beberapa buffer, file yang sama, pengaturan berbeda

10

Apakah mungkin mengedit file di bawah pengaturan yang berbeda secara bersamaan? Lebih tepatnya, saya ingin memiliki beberapa buffer dalam instance Vim yang sama yang memiliki konten yang sama (segera mengubah satu buffer mempengaruhi konten buffer lainnya), tetapi posisi kursor berbeda, tanda berbeda, highlight sintaks berbeda, dll.

Kasus penggunaan umum termasuk mengedit bagian berbeda dari file yang sama secara independen (tanpa misalnya memasuki mode visual dalam satu contoh memecah pilihan mode visual saat ini dalam contoh lain), dan mengedit file format campuran (misalnya HTML dan Javascript) tanpa harus mengubah pengaturan . (Pendekatan alternatif untuk use case kedua adalah mengubah pengaturan secara otomatis berdasarkan posisi kursor tapi itu di luar ruang lingkup untuk pertanyaan ini.)

Seorang editor yang penyebutnya diakui bisa mengejutkan menyebutnya "penyangga tidak langsung".

Gilles 'SANGAT berhenti menjadi jahat'
sumber

Jawaban:

2

Menggunakan beberapa jendela untuk melihat buffer yang sama memungkinkan Anda untuk melihat, mengedit, memilih, ... pada berbagai bagian buffer.

Penyorotan sintaksis adalah masalah yang lebih rumit, tergantung pada apa yang Anda inginkan. Vim sudah mendukung menyoroti berbagai bagian buffer dengan sintaks yang berbeda. Misalnya, jika Anda memiliki buffer filetype html, maka <style>tag akan disorot sebagai CSS, <script>tag akan disorot sebagai javascript, dll. Ini dilakukan dengan menggunakan :syn includeperintah dan kemudian mendefinisikan daerah sintaks yang relevan yang harus diterapkan oleh sintaks.

Alternatifnya adalah dengan menggunakan :ownsyntaxperintah untuk menentukan penyorotan sintaks yang digunakan untuk jendela tertentu.

Tanda adalah titik lengket. Tanda huruf kecil khusus untuk buffer dan tanda huruf besar bersifat global, tetapi tidak ada tanda khusus jendela.

jamessan
sumber
1
Jika saya menggunakan banyak windows, apakah itu berarti mereka harus di layar setiap saat? Apa yang terjadi jika saya menutup jendela sementara jendela lain menunjukkan buffer yang sama, apakah posisi kursor di jendela itu hilang? Apakah ada yang seperti :ownsyntaxuntuk pengaturan lain, seperti lekukan, perintah kompiler, dll?
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles Anda dapat memiliki dua jendela yang tidak pernah tampil di layar bersama-sama dengan menempatkannya di tab terpisah, sehingga mempertahankan pengaturan khusus jendela, posisi kursor, dll. Ini mungkin membantu, tergantung pada kasus penggunaan khusus Anda.
Kaya