vim でコメントを右揃えにする

vim でコメントを右揃えにする

私は vim を使用して C コードを書いており、コメントがすべて列 80 で終わるように右揃えにする方法を探しています。簡単な例を挙げると、次のようになります。

int a = 80; /* initialize a */
int b = 7; /* initialize b */
printf("%d + %d = %d", a, b, a+b); /*calculate the result */

に変わるべき

int a = 80;                               /* initialize a */
int b = 7;                                /* initialize b */
printf("%d + %d = %d", a, b, a+b); /*calculate the result */
                                                           ^col 80

他の書式設定を行うためにインストールしましたvim-easy-alignが、この配置を実行する方法がまだわかりません。誰か方法がわかるでしょうか?

私は にこだわっていませんvim-easy-align。同じ機能を果たす別のプラグインをお持ちの場合は、ぜひ教えてください ;)。

答え1

プラグインを使用せずに、単純な vim コマンドでこれを行う方法は次のとおりです。

通常モードでは、コメント区切り文字など、右揃えにする文字列の最初の文字にカーソルを置き、 を押してleaderテキストtabを右揃えにします。

nnoremap <leader><tab> mc80A <esc>080lDgelD`cP

説明付き:

mc80A <esc>080lDgelD`cP
| |        |   ||  ||
mc|        |   ||  ||    Mark the position of the cursor
  |        |   ||  ||
  80A <esc>|   ||  ||    Append 80 spaces at the end
           |   ||  ||
           080l||  ||    Go the the 80th column from the beginning of the line
               ||  ||
               D|  ||    Delete what is next
                |  ||
                gel||    goes after the last string char
                   ||
                   D|    Delete the characters remaining (complement to go 80)
                    |
                    `cP  and paste these to shift the string up to 80 column.

複数のコメントをマークするには、コメント区切り文字の次の出現を検索して、leadertabnleadertabnleadertabn...を押します。

答え2

私のAlignFromCursorプラグイン<Leader>riは、それを実行するマッピングとコマンドを提供します:RightAlignFromCursor。コメントの前の空白部分にカーソルを置き (手動またはコマンド経由:[range]normal)、マッピングまたはコマンドを呼び出します。'textwidth'またはプレフィックスの付いた を使用します[count]

関連情報