Vimのプレーンテキストドキュメントの箇条書き


8

Vimはリストの自動インデントをサポートしますが、デフォルト設定では、次のような数字で始まる順序付きリストのみが対象になります。

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.

これを次のような順不同の箇条書きリストに拡張する方法を理解できませんでした。

* 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.

formatlistpatRegExを変更しても、目的の結果は得られませんでした(実際、順序付けられたリストも破損していました)。

回答:


10

あなたが値を設定しようとしたものを知ることは助けになりますが、バックスラッシュを適切にエスケープしなかったと推測しています。

デフォルト値は

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

しかし、実際にその値を設定するには(vimrcまたはcmdlineで)使用する必要があります

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

これはで説明されてい:help option-backslashます。区切られた、順序付けられていないリストを操作できるようにformatlistpatする簡単な変更は次のように*なります。

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*

確かに、それは動作します-どうもありがとう!私はすべてを適切にエスケープしたと思っていました(パターンの複雑さを軽減しました)が、どうやら間違っていたようです。私は...私の悩みを説明するだろうアスタリスクをエスケープしている場合があります
ANC

2
ヘルプで説明したように[]、それは使用する方が速い[[:digits:]*][\d*]ではなく[0-9*]
アーディティヤ

一つは、使用して引用し、問題を回避できたletのではなく、set例えば、: let &formatlistpat='^\s*\(\d\+[\]:.)}\t ]\|[*-][\t ]\)\s*'。(これはのサポートが追加*-数字に加えて、弾丸のように。)
wjv

@wjv私はあなたの解決策を試してみました-それはリストのために動作しますが、アスタリスクではありません。何がこれを引き起こす可能性がありますか?
languitar

@wjvは、comments変数の内側の*のように見えますが、3つの部分からなるコメントの中間部分であるにもかかわらず、vimはアスタリスクを行コメントと混同させます。
languitar

3

jamessanが書いたもの(特にformatlistpat*リストを操作するための彼の提案)に加えて、 'c'オプション(コメントのフォーマット)を次の場所で設定解除することが重要ですformatoptions

set formatoptions-=c

そうしないと、Vimは箇条書きリストのフォーマットとコメントのフォーマットの間で混乱します。2行目以降に*が追加されます。


それだけでなく、q(でコメントのフォーマットを許可するgqformatoptionsフラグは、でフォーマットするときに問題を引き起こす可能性がありますgq。+1
カザーク

1

a)認識されたようなリストを取得するのに苦労したので、ここに解決策を投稿します。

" 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\\+

1

この問題を解決するには、この質問とこの他の質問からの複数の回答を組み合わせる必要があるため、この質問に対する新しい回答を作成しています。これが私の最終構成です。

set formatlistpat=^\\s*[0-9*]\\+[\\]:.)}\\t\ ]\\s*
set formatoptions-=c
set comments-=mb:*
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.