web-dev-qa-db-ja.com

テキストなしですべての行をvim検索逆検索する方法

grepを使用すると、grep -v "my search"を実行して、 "my search"なしですべての行を取得できます。

sedを使用すると、 sed '/ baz /!s/foo/bar/g'を実行して、bazを含まない行の置換テキストを検索できます

同じことをvimで行う方法はありますか?そしてそれは可能ですが、「s ///」構文はありません。 「/」検索構文のみを使用します。

18
nelaaro
:g/pattern/

パターンが見つかったすべての行に一致します。

:v/pattern/

反対のことをします。見る :h global 詳細については。

次のように使用できます。

:v/pattern/norm Ipattern not found - <CR>

「pattern」がないすべての行に「patternnotfound-」を付加する、または

:v/pattern/s/nrettap/pattern

「パターン」のないすべての行で「nrettap」を「パターン」に置き換える。

考案された例、はい。

29
romainl

たとえば、fooを含む行notを検索するには、次のようにします。

/^\(\(.*foo.*\)\@!.\)*$

ソース: http://vim.wikia.com/wiki/Search_for_lines_not_taining_pattern_and_other_helpful_searches

6
Karolos

:v commandEditの使用パターンに一致しない行を見つける従来のアプローチは、 :v command :を使用することです。

:v/Warning/p

実際の検索を開始する前に、関係のない行をできるだけ多く除外したい大きなログファイルを操作するときの巧妙なトリックは、ファイルを一時的な名前で保存し、そこにある一致しない行をすべて削除することです。

:sav junk.log
:v/warning/d

これで、「警告」に一致しないすべての行が削除された元のファイルのクローンを編集しているので、自由に編集できます。

参照: https://vim.fandom.com/wiki/Search_for_lines_not_taining_pattern_and_other_helpful_searches

1
selfboot