Saya menggunakan gvim untuk menulis email dan gunakan tw=72
untuk memecah baris panjang. Sekarang saya juga mengedit header surat dasar dalam dokumen yang sama, misalnya saya menambahkan penerima ke surat saya. Sekarang dengan tw=72
itu juga istirahat setiap kali setelah 72 karakter.
Bagaimana saya dapat mengatur tw=0
pada 4 baris pertama (itu adalah bagian header), dan tw=72
untuk sisa dokumen?
Pilihan format saya terlihat seperti ini, jika itu relevan:
set fo+=tcqn
formatting
mxmehl
sumber
sumber
textwidth
diterapkan ke seluruh buffer.line('.') < 5
, atau dengan memeriksa jika garis dimulai dengan header email (misalnyaFrom:
,To:
, dll).Jawaban:
Berkat komentar @ Carpetsmoker pada pertanyaan saya, saya bisa menyelesaikan ini persis seperti yang saya inginkan.
Dengan fungsi berikut di .vimrc (atau dalam kasus saya di file khusus yang hanya dimuat saat mengedit email saya), tw diatur ke 500 jika nomor baris lebih kecil dari 5, jika tidak 72. Dengan
au CursorMovedI
ini dicentang setiap kali kursor bergerak.Jika seseorang berencana untuk mengimplementasikan ini, pertimbangkan mengganti wildcard
au CursorMovedI *
dengan path tetap atau akhiran file.sumber
Alternatif yang lebih kuat untuk jawaban mxmehl.
Jika Anda menggunakan
filetype=mail
Vim akan menyoroti tajuk untuk Anda:Kita dapat menggunakan informasi sintaks untuk menentukan apakah suatu baris adalah sebuah header, dan mengatur bandwidth teks yang sesuai.
Nama sintaks dari header yang
mailHeaderKey
,mailSubject
,mailHeaderEmail
, danmailHeader
. Saya menemukan ini dengan melihat/usr/share/vim/vim74/syntax/mail.vim
.Alasan saya lebih suka solusi ini adalah tidak tergantung pada nomor baris yang sewenang-wenang, tetapi itu berfungsi sama benar untuk email dengan satu header dan dua puluh header.
sumber
Anda dapat mencapai ini menggunakan autocmds. Anda bisa memasukkan mereka dalam vimrc Anda, tetapi biasanya lebih baik untuk memasukkan mereka dalam tipe file, seperti yang dijelaskan di sini .
Maka Anda dapat menggunakan yang berikut ini:
Jika Anda lebih suka menggunakannya tanpa plugin tipe file, Anda harus mengganti
<buffer>
dengan pola file.Idenya adalah untuk mengubah
'textwidth'
kapan Anda memasuki mode memasukkan, dan mengembalikannya ketika Anda meninggalkannya.Jika Anda biasanya menavigasi dalam teks saat dalam mode sisipkan (misalnya: menggunakan tombol panah), Anda dapat meningkatkannya berdasarkan tautan yang disebutkan oleh @Carpetsmoke: Cegah Vim agar tidak memecah tautan tanda tengah dalam penurunan harga.
sumber
Saya tidak percaya ini mungkin. Namun, ada beberapa solusi.
Anda bisa menulis tajuk lalu
:set tw=72
. Karenatw
tidak berlaku surut ke teks yang sudah ada di buffer Anda,Anda bisa mengetikkan semuanya dengan
:set tw=0
dan kemudian setelah Anda selesai, pindah ke baris 4:set tw=72
,, dangqG
. Atau, jika Anda tidak ingin melakukannya secara manual, Anda bisa membuat makro atau memetakannya. Sebagai contoh, keduanya akan berfungsi:("r" untuk "memformat ulang")
Anda bahkan dapat mengatur ini agar terjadi secara otomatis ketika Anda menutup vim, dengan asumsi bahwa Anda ingin memformatnya kembali ketika Anda menutup vim, dan bahwa ada tipe file yang Anda gunakan hanya untuk email. Misalnya, jika semua email Anda memiliki
.email
ekstensi, Anda dapat melakukan:Tentu saja, Anda harus mengubah
*.email
ekstensi file apa pun yang sebenarnya Anda gunakan. Jika Anda menggunakan sesuatu seperti.txt
, saya tidak akan merekomendasikan ini, karena ini akan mengacaukan setiap.txt
file yang Anda miliki.sumber