Użyj argdo z wzorcem wyszukiwania, aby usunąć linię, jednocześnie eliminując błędy i wymagając potwierdzenia w Vimie

4

Używam gVim 7.3.46 na Win 7.

Łatwo jest użyć argdodo wyszukiwania argsplików w celu znalezienia wzorca i zastąpienia go, jednocześnie eliminując błędy i wymagając potwierdzenia.

:argdo %s/pattern/replace/gec | update

Chciałbym jednak usunąć całe linie zawierające wzorzec. Używam następujących.

:argdo %/pattern/d | update

Ale nie mogę ukryć błędów ani wymagać potwierdzenia. Czy jest na to sposób? Dzięki!

(Czy jest też sposób na ustawienie „więcej”? Dzięki!)

Richard Herron
źródło

Odpowiedzi:

8

Możesz ukryć niektóre błędy, poprzedzając polecenie za pomocą :silent. Aby usunąć linie zawierające wzór, polecenie to :g/pattern/d. Zatem poniższe czynności powinny robić, co chcesz.

:silent argdo g/pattern/d | update

Widzieć

:help :silent
:help :g

Aby wyłączyć „więcej”,

:set nomore

Zobacz także

:help 'more'
:help more-prompt
:help messages

Sposób postępowania z potwierdzeniami zależy od tego, co należy potwierdzić. Wprowadzenie !polecenia po często oznacza „Zrób to mimo wszystko”.

garyjohn
źródło
Dzięki! Czy mogę uzyskać tę s///gecfunkcjonalność? Może coś takiego argdo %s/pattern/^$//gec? Ale myślę, że to po prostu usuwa zawartość linii, a nie całą linię.
Richard Herron
2
Aby dostać się s///gecusunąć całą linię, użyj tego: %s/.*pattern.*\n//ec. \nDopasuje znacznik wycofanego z linii nawet dla pliku DOS. Nie gjest to konieczne, jeśli usuwasz całą linię.
garyjohn
1
to jest niesamowite, dziękuję! :set nomore, :arga **/*I :argdo execute 'normal gg=G' | wrozwiązuje wszystkie brzydkie wcięcia w projekcie pracuję nad.
shicholas