Jak używać potoku do edycji pliku za pomocą vi

15

Powiedzmy, że mam plik o nazwie file.txt. Jest to nazwa pliku, który chcę edytować za pomocą vi. Chcę zrobić coś takiego, aby móc edytować plik:

cat file.txt | vi

To jednak nie działa. Jak można to zrobić?

Aby wyjaśnić:

Oto zawartość pliku.txt:

textfile

Chcę więc jakoś wysłać zawartość pliku.txt do vi, aby stało się to samo, co podczas pisania vi textfile.

Zawartość pliku.txt może ulec zmianie. Chcę, aby vi edytować dowolny plik wymieniony w pliku.txt.

tony_sid
źródło
Nie sądzę, że vi = vim. Nie wiem, czy to wpływa na to pytanie, ale Twój tag wprowadza w błąd.
soandos
Myślę, że twoje pytanie może zawierać więcej. Otwarcie pliku o dowolnej nazwie to podstawowe użycie vi. tj vi file.txt. : Czy próbujesz zrobić coś bardziej zaawansowanego?
camster342
vi uruchamia vim na OSX i innych nowoczesnych systemach Linux.
tony_sid
W rzeczywistości próbuję edytować plik, którego nazwa jest przechowywana w schowku OSX. Wpisanie pbpaste wyświetli nazwę pliku. Próbuję edytować ten plik bez konieczności jego wpisywania, ale używając wszystkiego, co jest zapisane w schowku. Linux nie ma pbpaste, ale jest zasadniczo taki sam jak pobieranie danych wyjściowych z pliku cat.
tony_sid
zainstaluj, xclipa następnie użyj, xclip -oaby uzyskać dostęp do schowka na powłoce w x11. na wypadek, gdybyś musiał wymienić pbpaste...
akira

Odpowiedzi:

9

możesz spróbować:

% vi `cat file.txt`

lub, aby uniknąć niepotrzebnego użycia kota:

% vi `< file.txt`

mówisz vi (m) tylko kilka arbitralnych rzeczy. jeśli chcesz, aby vi (m) zrobiło coś w stylu „hej, otwórz ten plik”, musisz podać mu te same polecenia, których używałbyś w vi (m), np. coś jak :e foo.txt. ale to tylko bardziej skomplikowane niż robienie tego, co zaproponowałem.

akira
źródło
Te nie działały.
tony_sid
4
to są backticksy, wpisałeś je poprawnie? otwierają podpowłokę, uruchamiają „kota” ... jeśli to nie działa, spróbuj vi $(cat file.txt)
akira
Och ok, teraz działa. dzięki.
tony_sid
23

Przynajmniej dla vima (nie jestem pewien co do vi), możesz to zrobić

cat file.txt | vim -

„-” mówi vimowi, żeby czytał ze standardowego wejścia.

Jeff
źródło
1
Przepraszamy, ale to nie jest poprawna odpowiedź. Spowoduje to otwarcie vima z zawartością „pliku tekstowego”. Pytający chce, aby vim sam otworzył „plik tekstowy”. Oddałbym głos, ale niestety nie mam tutaj wystarczającej reputacji.
scubbo
scubbo ma rację! Moja odpowiedź jest bardziej przydatna po prostu przesyłając coś ze standardowego wejścia.
Jeff