Konfigurasikan kolom mana yang dibungkus `gq`?

9

Secara default, menggunakan gqdengan perintah gerakan membungkus teks yang dijelaskan oleh perintah gerakan ke 79 kolom. (Saya relatif baru ke vi/ vimjadi saya tidak tahu terminologi yang benar.) Bagaimana saya bisa mengkonfigurasi jumlah kolom sehingga bukannya membungkus jumlah kolom yang berbeda?

Misalnya, anggap saya memiliki teks ini:

This is text for illustration.

Saya ingin dapat mengonfigurasi kolom bungkus ke 29 sehingga jika kursor saya ada di baris dan saya jalankan gqip, akan diubah menjadi:

This is text for
illustration.

Saya menggunakan gVim di Ubuntu GNOME 17.04, jika itu membuat perbedaan.


EDIT: Saya mencari cara untuk membungkus bagian teks tertentu secara manual dengan panjang garis yang diberikan tanpa mempengaruhi yang lain, karena ada beberapa kasus di mana saya OK dengan melewati batas. Untuk memperluas contoh sebelumnya, jika dokumen saya terlihat seperti ini:

This is text for illustration.

This is some other text for illustration.

Dan saya menjalankan gqipdengan kursor saya di baris pertama, saya ingin mendapatkan:

This is text for
illustration.

This is some other text for illustration.

Lalu jika saya mulai mengetik pada baris baru di bawah itu, saya ingin baris itu juga tidak terpengaruh oleh batas.

Kasus penggunaan saya adalah dalam menulis dokumen LaTeX: Saya ingin dapat membungkus paragraf prosa ke sejumlah kolom berdasarkan permintaan, tetapi dalam kasus-kasus tertentu di mana saya menulis persamaan panjang, atau tabel, saya ingin baris tersebut untuk tinggal lebih lama dari batas.

jdw1996
sumber

Jawaban:

6

Anda dapat melakukan ini dengan mengatur textwidth, dan menghapus tdari formatoptions.

set textwidth=29
set formatoptions-=t

Anda juga harus qmengaktifkan opsi formatoptionsuntuk menggunakan gq. Tampaknya selalu aktif untuk saya, tetapi Anda mungkin ingin menambahkan set formatoptions+=quntuk berada di sisi yang aman.

Seharusnya tidak menjadi masalah dengan usecase Anda saat ini, tetapi copsi auto-wraps komentar, jadi jika Anda tidak menginginkannya set formatoptions-=c.

Untuk info lebih lanjut, lihat:

:help formatoptions " Not much info.
:help fo-table      " All the options in detail.
gib
sumber
0

Ada dua cara untuk melakukan ini: mengatur 'textwidth'lebar teks Anda dalam karakter atau kolom; mengatur 'wrapmargin'lebar margin kanan dalam karakter atau kolom. Misalnya, untuk membungkus teks Anda dengan lebar 29 karakter atau kolom:

set textwidth=29

Lihat

:help 'textwidth`
:help 'wrapmargin'
:help 10.7
garyjohn
sumber
Terima kasih atas tanggapan Anda, tetapi ini bukan yang saya cari. Saya ingin dapat secara manual membungkus beberapa bagian teks tanpa mempengaruhi yang lain. Bagi saya, kedua opsi ini secara otomatis membungkus teks baru yang saya masukkan. Saya akan memperbarui pertanyaan untuk lebih menjelaskan hal ini.
jdw1996
Vim tidak memiliki cara bawaan untuk melakukan itu. The gqperintah tidak menyediakan pengaturan lebar bungkus per doa; itu mengikuti textwidthdan textwidthberlaku untuk seluruh buffer, bukan hanya garis-garis tertentu. Jika Anda baik-baik saja dengan membungkus bagian yang ingin dibungkus secara manual, Anda dapat menulis fungsi yang: menyimpan nilai saat ini dari textwidth; diatur textwidthke 29; tampil gqdi jalur yang dipilih; mengembalikan nilai textwidth. Kemudian tetapkan fungsi ini ke formatexpr. Atau, Anda dapat menggunakan program eksternal seperti fmtuntuk memformat garis yang dipilih.
garyjohn
Ok aku paham. Saya akan melihat menulis fungsi seperti itu. Terima kasih!
jdw1996