Używam grep -e Peugeot -e PeuGeot carlist.txt
do przeszukiwania pliku carlist.txt i wyciągania niektórych elementów. Zakładam, grep -e Peugeot -e PeuGeot carlist.txt | vi
że to by mnie przepuściło, ale otrzymuję to:
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
:read !grep -e Peugeot -e PeuGeot carlist.txt
.:read !cmd...
umieści wynik polecenia cmd ... w pliku (w miejscu kursora)grep ... > /tmp/foo
. Możesz dodać&& vi /tmp/foo
na końcu, jeśli chcesz natychmiast edytować ten plik.vi
działa na dowolnych plikach tekstowych; same pliki nie są bezpośrednio powiązanevi
. (Lub, jak właśnie się dowiedziałem,vi -
spowodujevi
działanie na zawartościstdin
;vim
robi to, ale nie wszystkie wersjevi
do.)Odpowiedzi:
Uruchamianie vi lub vim z argumentem „-” powoduje, że odczytuje on plik do edycji ze standardowego wejścia. W związku z tym:
zrobi to, czego potrzebujesz.
źródło
stdin
. W niektórych przypadkach trzeba będzie przekierować odstderr
dostdin
, na przykład:valgrind my_file.out 2>&1 | vi -
grep
kolorowania wyszukiwania (złożonego z niedrukowalnych znaków) w Vimie? Zawsze możesz po prostu przeprowadzić wyszukiwanie w Vimie.Powinieneś użyć przekierowania wyjściowego :
Myślę też, że
grep
można to poprawić:źródło
Oprócz tego
vim -
możesz także użyć podstawiania procesów za pomocą<(command)
składni, na przykład:Zobacz też:
źródło
Przekierowanie wyjściowe można również wykorzystać w następujący sposób:
Nawet wiele wyjść poleceń może zostać przekierowanych, tak jakby były zapisane w osobnych plikach:
źródło
W
~/bin/r
:w
~/.vimrc
:Następnie:
i mam
w moim
~/.bashrc,
takźródło
Istnieje wiele skutecznych sposobów robienia tego, co chcesz, w obrębie vi (m) lub poza vi (m).
Uruchom polecenie, utwórz plik (tymczasowy), a następnie edytuj plik ( patrz odpowiedź Josepha R. )
Uruchom polecenie (w tle), aby utworzyć plik tymczasowy, i edytuj go, używając „: e!” aby odświeżyć plik podczas jego tworzenia (jest to przydatne w przypadku plików dziennika i innych plików tworzonych przez inny proces, np. cron?),
Uruchom vi (m) i uruchom proces potomny, aby utworzyć plik tymczasowy, a następnie przeczytaj go,
Lub po prostu przejdź do pliku,
Uruchom vi (m) i użyj podwójnego uderzenia „!!” aby vi uruchomiło polecenie potomne, biorąc wyniki i wstawiając je do bieżącej lokalizacji (nadpisuje bieżącą linię, więc upewnij się, że masz pustą linię),
A teraz możesz zapisać plik (jeśli chcesz) pod dowolną nazwą pliku,
Odpowiedź Petra Uzela jest również dobra,
Który czyta ze standardowego
źródło