Vimの行の範囲に行番号を追加するにはどうすればよいですか? 「:set nu」のようではありません-これは数字を表示するだけですが、ファイルには追加しません。
と
_:%s/^/\=line('.')/
_
編集:コメントを要約します。
このコマンドは必要に応じて微調整できます。
視覚的な選択(V
+ move)の行の前に番号を追加し、番号を42から開始するとします。
_:'<,'>s/^/\=(line('.')-line("'<")+42)/
_
番号と行の古いテキストの間に文字列を追加する場合は、それを(VimLの_.
_で)number-expressionに連結します。
_:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/
_
これをテキストとしてソートする必要がある場合、結果をゼロで埋めることができます。これは、_0001, 0002
_...の代わりにprintf
for _1, 2
_...を使用して実行できます。例:
_:%s/^/\=printf('%04d', line('.'))/
_
とにかく、さらに情報が必要な場合は、vimヘルプを開いてください:_:h :s
_とリンク(_|subreplace-special|
_、...、|submatch()|
)をたどってください
cat -n
は、入力に行番号を追加します。現在のファイルをcat -n
にパイプして、現在のバッファーをstdoutに出力するものに置き換えることができます。幸いなことに、この複雑なソリューションはvimで10文字未満です。
:%!cat -n
または、サブセレクションのみが必要な場合は、領域を視覚的に選択して、これを入力します。
:!cat -n
これにより、視覚的な選択マーカーが自動的に配置され、入力すると次のようになります。
:'<,'>!cat -n
行番号を消去するには、control-v
を使用することをお勧めします。これにより、視覚的に長方形を選択でき、x
を使用してその長方形を削除できます。
GNU system:外部nl
バイナリの場合:
:%!nl
Unixライクな環境では、vimにはシェルとの使いやすいインターフェイスがあるため、catまたはawkを使用して行番号を簡単に生成できます。
From Vim Tip28 :
:%!cat -n
または
:%!awk '{print NR,$0}'
しかし、win9x、win2000のMS-DOSでvimを使用すると、これらのツールキットが失われます。これはvimによってのみこれをアーカイブする非常に簡単な方法です:
fu! LineIt()
exe ":s/^/".line(".")."/"
endf
または、アルファベットで構成されたシーケンスは上記と同じくらい簡単です:
exe "s/^/".nr2char(line("."))."/"
Substを使用することもできます:
:g/^/exe ":s/^/".line(".")."^I/"
また、ファイルに追加せずに行のみを印刷することもできます。
「特に大きなソースファイルを編集して、行番号を紙に印刷するのに役立つことがあります。
これを行うには、オプション:set printoptions=number:y
を使用して有効にし、:set printoptions=number:n
を使用してこの機能を無効にすることができます。
行番号を常に印刷する必要がある場合は、vimrc
にset printoptions=number:y
行を配置します。 "
まず、必要な場合は既存の行番号を削除できます。
:%s/^[0-9]*//
次に、行番号を追加できます。 NR
は、1から始まる現在の行番号を参照するので、必要な番号を取得するために計算を行うことができます。次のコマンドは、4桁の行番号を提供します。
:%!awk '{print 1000+NR*10,$0}'
"VisIncr" プラグインは、一般的な数字(または文字、日付、ローマ数字など)の増分列の挿入に適しています。数値形式、パディングなどを制御できます。したがって、すべての行の前に「_」を挿入します(:s
または:g
またはvisual-block insert)、visual-blockモードでその列を強調表示し、プラグインからコマンドの1つを実行します。
この優れた答え を使用して行番号を挿入した後、誰かがタブ(またはいくつかのスペース)を挿入したい場合、ここに方法があります。エスケープモードに入ったら、次の操作を行います。
:%s/^/\=line('.').' '/
^
は行の始まりを意味し、%s
は置換のディレクティブです。したがって、各行の先頭に行番号を付けて4つのスペースを追加し、置換前の行の内容をすべて入れて、ファイル内のすべての行に対してこれを行うと言います。
これにより、自動的に置き換えられます。または、コマンドに確認を求める場合は、次を実行します。
:%s/^/\=line('.').' '/igc
PS:vimの力:)