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