Vimの既存のテキストの上に連続した整数列を書き込むには?

Vimの既存のテキストの上に連続した整数列を書き込むには?

たとえば、次のようなテキストがあるとします。

/ apple
/ orange
/ banana
/ bread

列に連続した整数を効率的に追加するには?

/1 apple
/2 orange
/3 banana
/4 bread

実際の問題では、リストの長さは20行、50行以上である可能性があります。

答え1

vim1つのアイデアはマクロ機能を使用することです。カーソルを/最初の位置に置き、/ apple次の操作を行います。

a1<Esc>

すべてを開始するには、最初の数字を挿入します(<Esc>Escapeキーで)。次に、新しく挿入された項目にカーソルを置き、1マクロを記録します(スロットにq)。

qqyiwj0p<C-a>q

これで、最初の2行に番号が付けられているはずです。これでマクロをn-2複数回実行できます。ここでのn総行数は次のとおりです。たとえば、50行がある場合は2行を手動で入力したため、マクロを48回実行します。

48@q

答え2

vimの「外部コマンドによるパイプ」機能を使用できます。 vimでファイルを開き、次のようにします。

:%!cat -n | awk '{print $2, $1, $3;}' | sed 's/ //'

巧妙なawkコードを使用すると、sedを使用する必要はありません(各行の最初のスペースのみを削除します)。 30秒以内に動作しなかったため、sedを使用しました。

関連情報