3

複数の連続した同一の行が含まれている可能性のあるファイルを見ています。

次の同一でない行にジャンプする簡単な方法はありますか?

または、最初の行と等しいすべての行を折りたたむことができるようにしたいと思います。これは、折りたたまれた行の数だけを示しています。

4

2 に答える 2

7

独自の fold-expr を定義できます。

最初のセット fdm:

:set fdm=expr

それから

:set foldexpr=getline(v:lnum)==#getline(v:lnum-1)?1:0

zM運が良ければ、 と入力してすべての折りたたみを閉じることができます ^_^ すべての複製された行が折りたたまれます。

zR入力してすべての折り畳みを開くことができます。

それが機能し、そのような種類のファイルを頻繁に開く場合は、上記の行を .vimrc に入れることができます。(ft を使用した au) 1 回のジョブのみで、そのファイルにモード行を書き込むことができます。

于 2013-03-29T21:41:47.553 に答える
1

これを試して:

  :nmap <F2> "1y$<CR>/^\(<C-R>1$\)\@!<CR>

F2 を次のようにマップします。

  • 現在の行をレジスタ 1 にコピーします
  • レジスタ 1 の内容と一致しない最初の行を検索 (および移動)

コピーした行のテキストに、検索正規表現を混乱させるエスケープ文字が含まれていない限り、これはうまくいくようです。これは、レジスタ 1 がエスケープせずに検索式にドロップされているためです。これを確実に修正するのは難しいですが、通常のログ ファイルの場合、それほど問題にはなりません。

また、vim と結婚しておらず、ファイルの連続していない重複行を読み取る必要がある場合、標準的な UNIX の方法は次のとおりです。

uniq filename

vim を使用したいが、ファイルを変更する必要がない場合は、次のことを試してください。

:%!uniq

(後者を試す場合は、必ず保存せずに終了してください)

于 2013-03-29T23:14:01.793 に答える