viでファイル内の他の特定の行をリンクする方法

viでファイル内の他の特定の行をリンクする方法

vi / vimの「貼り付け」の問題に対する解決策を探しています。

テキストファイルの特定の行をリンクする方法は?次のファイルがあります。

15/10/2011 Revolution day
16/10/2011 About Rome
 - differents newspapers
  blogs an feeds
 :) hp
17/10/2011 Yep, another day

数字で始まらないすべての行を貼り付けたいです。次のようなことを試しましたが、うまくいきません。

:[!^[0-9]]!paste -d ' ' -s

答え1

:%s/\(.*\)\n\(^[^0-9]\)/\1\2/g

スペースまたはその間に何かを追加するには、\1と\2の間に追加します。

答え2

可能であれば、VIMで次の2つの手順で実行できます。

まず、すべてのワイヤを1行に接続します。

VIM でファイルを開き、次のキーストロークを実行します。VGJ

  • V=視覚モード(文字()ではなく行に基づいてv
  • G=すべての行を強調表示
  • J=すべてのワイヤを接続

次に、結果の行が始まる日付形式に従って行を分割します。

VIM でファイルを開き、次のコマンドを実行します。

:%s#\([0-9][0-9]/[0-9][0-9]/[0-9]\)#^M\1#g

これにより、リンクされた単一行でNN / NN / N(ここでN = 0-9)と一致する文字列が検索され、行の先頭の日付形式と一致し、対応する一致に分割されます。

答え3

vと一緒に使用してくださいjoin

:v/^[0-9]/-1,join

分割:

  • :v 正規表現と一致しない行を選択してください。
  • /^[0-9]/ 数字で始まるすべての行
  • -1, 前の行から現在の行に
  • join スペースで区切られた選択した行のマージ

答え4

試してみてください:

:g/^\d/,/^\d/-1j

そしてエラーメッセージを無視してくださいE16:誤った範囲

関連情報