24

vimエディターを使用して、ファイル(約1000行)の3行ごとに1行追加したかったのです。誰かが私を助けることができますか?

ありがとう、アリシャ

4

4 に答える 4

41

それを行うためのvim固有の正規表現があります

  :%s/.*\n.*\n.*\n/\0\r/g
  • %s は、ファイル全体で置換する vim ex コマンドです
  • .*\n は行末を含む行です
  • \0 は一致した式全体です
  • \r 新しい行を追加するという vim の方法 (\n が期待するようなものではありません)

編集:改行以外が必要な場合は、テキストを \r の前に置くだけです (正規表現文字が含まれている場合は、適切に正規表現をエスケープします)

于 2012-05-02T12:46:01.163 に答える
20

マクロを使用できます。完全なプロセスは次のようになります。

qq     " start recording to register q (you could use any register from a to z)
o      " insert an empty line below cursor
<Esc>  " switch to normal mode
jjj    " move the cursor 3 lines downward
q      " stop recording

次に、開始行に移動して入力1000@qし、マクロを 1000 回実行します。

于 2012-05-02T13:28:28.180 に答える
7
" insert a blank line every 3 lines

:%s/\v(.*\n){3}/&\r          

: .............. command
% .............. whole file
s .............. replace
/ .............. start pattern that we will replace
\v ............. very magic mode, see :h very-magic
(.*\n) ......... everything including the line break
{3} ............ quantifier 
/ .............. start new pattern to replace
& .............. corresponds to the pattern sought in (.*\n)
\r ............. add line break

ソース: http://www.rayninfo.co.uk/vimtips.html

于 2012-05-10T22:23:48.100 に答える
4

私はこれを行います:

:%s/^/\=(line(".")%4==0?"\n":"")/g

これは、要件が「* 700行ごとに新しい空白行を追加する*」に変更された場合に機能します:)「4」を変更するだけです

PSこれを行う必要がある場合、vimでは行いません。sed、awk、もっと簡単にできます。

于 2012-05-02T13:26:08.370 に答える