Bungkus jenis garis tertentu dengan lebar teks yang berbeda?

1

Saya memiliki set teks untuk membungkus pada 80 karakter.

Mungkinkah ada teks yang dibungkus, katakanlah, 50 karakter saat mengedit jenis garis tertentu?

Sebagai contoh, saya memprogram Ruby dan saya ingin komentar Ruby dibungkus menjadi 50 karakter sementara yang lainnya tetap 80.

Apa itu mungkin?

jordelver
sumber

Jawaban:

1

Pembungkus dikontrol oleh 'textwidth'opsi. :help 'textwidth'menunjukkan bahwa itu lokal untuk buffer , sehingga nilai yang berbeda dapat diatur, misalnya secara manual via

:setlocal textwidth=50

Untuk membuat ini diterapkan secara otomatis ke semua file Ruby, Anda dapat menggunakan deteksi tipe file bawaan dan plugin tipe file Vim . Masukkan perintah di atas ke dalam ~/.vim/after/ftplugin/ruby.vim. (Ini mengharuskan Anda memiliki :filetype plugin on; penggunaan direktori setelah memungkinkan Anda untuk menimpa pengaturan jenis file standar yang dilakukan oleh $VIMRUNTIME/ftplugin/ruby.vim.) Atau, Anda dapat menentukan secara :autocmd FileType ruby ...langsung di Anda ~/.vimrc, tetapi ini cenderung menjadi sulit sekali setelah Anda memiliki banyak penyesuaian.

Fungsi bawaan berhenti di sana, pada ruang lingkup buffer. Untuk menerapkan lebar teks yang berbeda hanya pada komentar (atau elemen sintaksis lainnya), adaptasi dinamis diperlukan. Ini dapat diimplementasikan menggunakan :autocmd, mengaitkan ke dalam CursorMovedacara. Plugin OnSyntaxChange saya menyediakan fungsi utilitas untuk menyederhanakan pengaturan (sekali lagi ditempatkan di ~/.vim/after/ftplugin/ruby.vim):

call OnSyntaxChange#Install('Comment', '^Comment$', 1, 'a')
autocmd User SyntaxCommentEnterA setlocal textwidth=50
autocmd User SyntaxCommentLeaveA setlocal textwidth=80
Ingo Karkat
sumber
Terima kasih tetapi saya hanya ingin pengaturan berlaku untuk komentar bukan seluruh file Ruby.
jordelver
Oh, maaf, pasti melewatkan itu. Dibutuhkan sedikit usaha; untungnya, saya telah menulis sebuah plugin untuk menyederhanakannya. Lihat hasil edit saya.
Ingo Karkat
Ini bagus. Terima kasih banyak. Maaf untuk tanggapan mega-terlambat :)
jordelver