daftar berpoin untuk dokumen teks biasa di Vim

8

Sementara Vim mendukung pengindeksan otomatis dalam daftar, pengaturan default hanya mencakup daftar yang dipesan, dimulai dengan angka, seperti:

1. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
   tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
2. veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
   commodo consequat.

Saya belum dapat menemukan cara memperluas ini ke daftar yang tidak berurutan, berpoin, seperti:

* Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
* veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
  commodo consequat.

Mengubah formatlistpatRegEx tidak mengarah ke hasil yang diinginkan (memang, bahkan melanggar daftar yang dipesan).

AnC
sumber

Jawaban:

10

Mengetahui apa yang Anda coba tetapkan nilainya akan membantu, tapi saya kira Anda tidak melarikan diri dari garis miring terbalik dengan benar.

Nilai standarnya adalah

formatlistpat=^\s*\d\+[\]:.)}\t ]\s*

tetapi untuk benar-benar menetapkan nilai itu (di vimrc Anda atau di cmdline) yang harus Anda gunakan

set formatlistpat=^\\s*\\d\\+[\\]:.)}\\t\ ]\\s*

Ini dijelaskan dalam :help option-backslash. Modifikasi sederhana untuk memungkinkan formatlistpatbekerja dengan daftar yang *dibatasi dan tidak berurutan adalah

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
jamessan
sumber
Memang, itu berhasil - terima kasih banyak! Saya pikir saya telah benar-benar lolos dari segalanya (bahkan mengurangi kompleksitas polanya), tetapi ternyata saya salah. Saya mungkin telah lolos dari asterisk, yang akan menjelaskan masalah saya ...
AnC
2
Sebagaimana dijelaskan dalam bantuan untuk []itu lebih cepat digunakan [[:digits:]*]atau [\d*]lebih daripada[0-9*]
Aditya
Satu bisa menghindari masalah mengutip dengan menggunakan letketimbang set, misalnya: let &formatlistpat='^\s*\(\d\+[\]:.)}\t ]\|[*-][\t ]\)\s*'. (Ini menambah dukungan untuk *dan -sebagai peluru, di samping angka-angka.)
wjv
@ wjv Saya sudah mencoba solusi Anda dan berfungsi untuk - daftar, tetapi tidak dengan tanda bintang. Adakah yang tahu apa yang menyebabkan ini?
languitar
@wjv tampaknya * di dalam commentsvariabel, meskipun merupakan bagian tengah dari komentar tiga bagian, mari kita membingungkan asterisk dengan komentar garis.
languitar
3

Selain apa yang ditulis jamessan (khususnya formatlistpatsarannya untuk bekerja dengan * daftar), penting untuk memiliki opsi 'c' (pemformatan komentar) yang tidak disetel di formatoptions:

set formatoptions-=c

jika tidak, Vim akan bingung antara pemformatan * daftar berpoin dan pemformatan komentar. Anda berakhir dengan * tambahan pada baris ke-2 dan berikutnya.

Blixtor
sumber
Bukan hanya itu, tetapi flag q(izinkan pemformatan komentar dengan gq) formatoptionsdapat menyebabkan masalah saat memformat dengan gq. +1
Kazark
1

Saya mengalami masalah dalam mendapatkan daftar seperti yang a)dikenali, jadi saya akan memposting solusi saya di sini:

" Recognise lists like 1), 1., a), a., and so on
" Note that | need to be escaped AND preceeded by a literal backslash
set formatlistpat=^\\s*\\([0-9]\\+\\\|[a-z]\\)[\\].:)}]\\s\\+
RobM
sumber
1

Saya menulis jawaban baru untuk pertanyaan ini karena saya harus menggabungkan beberapa jawaban dari pertanyaan ini dan pertanyaan lain ini untuk membuatnya berhasil. Ini adalah konfigurasi terakhir saya.

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
set formatoptions-=c
set comments-=mb:*
merlin2011
sumber