Jak otworzyć plik w vimie za pomocą potoku

15

locateBardzo często używam polecenia.

Więc jeśli uruchomię następujące polecenie.

locate updatedb | head -1

To daje mi O/p

/usr/updatedb.conf

Zastanawiam się, czy istnieje takie polecenie, które pozwala mi bezpośrednio otworzyć ten plik?

Mam nadzieję na coś takiego.

locate updatedb | head -1 | vim
Kryszna
źródło

Odpowiedzi:

22

Już prawie skończyłeś:

$ locate updatedb | head -1 | xargs vim

czasami (pod niektórymi terminalami) musisz zresetować terminal po edycji.

$ reset
periket2000
źródło
2
Najprawdopodobniej twoja wersja locatema opcję -l/ --limit/ -n, więc nie potrzebujesz head -1:locate -n 1 updatedb | xargs vim
Dmitrij Aleksandrow
1
Dlaczego zdarza się takie uszkodzenie terminala? Czy jest jakiś sposób, aby tego uniknąć?
Jacobo de Vera
16

Jako interaktywny edytor, Vim potrzebuje stdin i stdout, więc używanie go w potoku jest problematyczne i sprawia, że ​​Vim ostrzega przed tym. W przypadku tylko jednego pliku podstawianie procesów rozwiązuje to łatwo:

vim "$(locate updatedb | head -1)"

Możesz także użyć backticków, a to nawet działa w samym Vimie:

:edit `locate updatedb | head -1`
Ingo Karkat
źródło
Działa to również na ciągi ze spacjami, co jest miłe dla nazw plików takich jak „wersja 2 - wersja ostateczna.csv”.
Alex Moore-Niemi
0

Wiem, że to złe rozwiązanie, ale użyłem tego do tworzenia aliasu w .bashrc:

locate updatedb  > /tmp/vimForTempDontTouch && vim /tmp/vimForTempDontTouch

Wady: brzydkie

Zaleta: Brak efektów ubocznych przy terminalu

Tebe
źródło