Próbuję przekierować dane wyjściowe polecenia bash do nowego pliku.
Jeśli spróbuję potoku, jak poniżej:
ls -la | vim
Bash pokazuje mi błędy:
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
Wiem, że mogę otworzyć Vima, a następnie użyć:
:r !ls -la
Ale czy istnieje sposób, aby to zrobić w samym bashu, aby Vim został otwarty, a dane wyjściowe wklejone tam automatycznie?
<(ls -la)
jest faktycznie podstawieniem procesu, a nie podstawieniem polecenia .Jesteś naprawdę blisko. Brakowało Ci tylko jednej postaci.
źródło
Oto inne podejście, mam nadzieję, że nauczy kogoś czegoś nowego.
Jeśli wiesz, że polecenie
:r !ls -la
działa w vimie, możesz wykonać następujące czynności, aby otworzyć vim i sprawić, aby uruchomił polecenie, gdy tylko się otworzy, prosto z bash:Jest to odpowiednik otwarcia,
vim
a następnie wykonania polecenia:r! ls -la
. Powinno to działać z każdymvim
poleceniem, w którym polecenie występuje po-c
opcji.źródło
Możesz powiedzieć vimowi, aby otworzył standardowe wejście:
źródło
Jeśli Twoim celem jest po prostu umieszczenie danych wyjściowych w pliku tekstowym, nie musisz wywoływać vima. Bash może to zrobić sam
źródło
setlocal buftype=nofile
Jest to dobra opcja, jeśli zamierzasz utworzyć alias, aby zastąpić
less
:Teraz nie musisz pisać! do wyjścia.
Inną opcją jest:
więc możesz wyjść za pomocą just
q<enter>
.źródło