Saya baru saja melihat posting ini yang menjelaskan bagaimana membungkus seluruh kata dalam vim. Solusi yang diterima adalah ini:
:set formatoptions=l
:set lbr
Yang mengambil teks ini (tab ditampilkan sebagai \ t):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will wr|ap here
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Ini menyelesaikan perilaku seperti ini (tab ditampilkan sebagai \ t):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|wrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Namun saya ingin mendefinisikan kembali fungsi ini. Saya ingin baris yang dibungkus memiliki jumlah tab di depannya yang sama dengan baris di atas ditambah satu. Yaitu:
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|\t\t\twrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Ada ide?
Jawaban:
The breakindent Patch memiliki apa yang Anda cari. Saya berhasil menerapkannya menggunakan instruksi yang ditemukan di utas ini:
Patch Vim dengan patch breakindent di OS X dengan Homebrew
Secara khusus, rumus Homebrew echristopherson.
Saya tahu utas ini sudah tua tetapi populer di google dan saya menemukannya beberapa kali ketika mencoba menemukan solusi.
EDIT: Patch ini sekarang disertakan dengan vim sebagai patch 7.4.338. Lihat: https://retracile.net/blog/2014/07/18/18.00
Di Yosemite (Mac OS X), saya menggunakan perintah snowbound dengan hombrew:
sumber
brew install macvim --with-features=huge --override-system-vim --HEAD
Ini tidak berhasil ketika pertanyaan awalnya diajukan, tetapi mulai 25 Juni 2014, ini akan berhasil. (Dengan asumsi Anda memperbarui vim Anda ke versi yang lebih baru dari tanggal itu)
Tambahkan ke .vimrc Anda:
Dan itu dia!
-
Beberapa orang (termasuk saya) berbagi satu .vimrc di banyak komputer. Dalam hal ini, penting untuk memiliki baris ini yang kuat (untuk menghindari pesan kesalahan yang mengganggu). Ini sedikit lebih baik:
Dengan cara ini, jika Anda menggunakan vim versi sebelumnya, Anda tidak mendapatkan pesan kesalahan.
sumber
if has("patch-7.4.354")
Yang terbaik yang akan Anda dapatkan adalah
showbreak
opsi yang akan meletakkan string tetap di depan setiap baris yang dibungkus (saya gunakanset showbreak=...
).sumber
:help 'showbreak'
, tidak, Anda tidak bisa -showbreak
hanya string.Saya setuju dengan jawaban yang mengatakan 'showbreak' adalah pilihan terbaik. Showbreak biasanya tidak memungkinkan Anda untuk meletakkan karakter noncetak (misalnya, spasi atau tab) ke dalam string showbreak, sehingga seperti yang biasa digunakan, ini hanya akan memberi Anda indikator di sepanjang margin kiri, yaitu tidak ada indentasi yang sebenarnya. Ini tidak bagus, karena tujuan utama OP, menurut saya, adalah memberi garis yang dibungkus lekukan agar tidak mengacaukan area margin kiri dan terlihat seperti garis mereka sendiri.
Jadi salah satu cara untuk menambahkan indentasi (jelek) menggunakan showbreak adalah dengan menggunakan banyak karakter, .eg, ": set showbreak => --------------->". Ini menghasilkan sesuatu yang terlihat seperti ini:
Alternatif yang lebih baik mungkin menggunakan karakter spasi yang tidak terputus (dengan asumsi instance Vim Anda diaktifkan unicode), yang masing-masing dapat dimasukkan ke string showbreak menggunakan urutan kunci ctrl-v, 160. Dengan begitu Anda bisa memasukkan string showbreak yang kosong di sisi kiri dan tampak seperti indentasi yang sebenarnya. Misalnya, ": set showbreak =.. ... ... ...... >>" where each '.' dalam perintah sebenarnya karakter spasi tidak terputus yang dimasukkan dengan menekan ctrl-V, 160. Dengan cara itu Anda akan mendapatkan bungkus yang menjorok dengan baik, seperti ini:
Anda masih tidak memiliki kemampuan untuk memvariasikan tingkat indentasi sesuai dengan indentasi baris sebelumnya, tetapi setidaknya Anda mendapatkan indentasi yang bersih dari garis yang dibungkus tanpa banyak kekacauan visual di sepanjang margin kiri jendela. Mungkin masih ada kebingungan jika indentasi baris terbungkus kurang dari awal baris sebenarnya, tetapi ini mungkin dapat dihindari dengan membuat showbreak "indentasi" cukup besar (yaitu, lebih besar daripada indentasi yang biasa ditemukan dalam kode Anda ) tetapi masih cukup kecil sehingga memberikan cukup ruang untuk pembungkusan teks yang terbaca. Untuk banyak kegunaan, saya pikir indentasi showbreak 40 atau 50 spasi akan melakukannya dengan cukup baik.
sumber
:set showbreak=\ \ \ \
. Namun, masih tidak berfungsi untuk tab.