私は通常、構文に従ってソースコードをインデントするために、vim 再インデント演算子 ('=') を使用します。また、ファイル全体でも使用します。特に、他の人が書いたソースコードを読む必要があり、それらのタブ設定が異なる場合などに使用します ('gg=G' は非常に役立ちます)。これは、次のような場合にのみ問題になります
(1) int main() {
(2) for (int i=0; i<3; i++) {
(3) //for (int i=0; i<4; i++) {
(4) std::cout << i << std::endl;
(5) }
(6) }
このコードをインデントしようとすると、次のインデント レベルが得られます。
(1) level 0 (which is good)
(2) level 1 (also)
(3) level 2 (could be 1, but I can live with that)
(4) level 2 (good)
(5) level 1 (good)
(6) level 1 (this is the problem)
したがって、行 (5) の右中括弧は、行 (3) の左中括弧に関連付けられています。これはコメント アウトされているため、構文の一部ではありません。また、(6) 行の右中括弧は (2) の左中括弧とペアになっていますが、これは誤りです。この問題は、コードの残りの部分にも影響を与えます。この問題の後に続く関数は、レベル 0 に揃えられず、レベル 1 から開始されるためです。
カーソルが行 (5) のブレースにある場合、(2) で一致する正しいブレースが強調表示されますが、'%' を押すと行 (3) にジャンプします。この問題はこちらで対処されていますが、想定される解決策 (matchit と呼ばれるプラグイン) は % のみを修正し、= は修正しません。
この問題を解決するプラグインまたはハックを知っている人はいますか?
前もって感謝します。