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

Odpowiedzi:


22

Już prawie skończyłeś:

$ locate updatedb | head -1 | xargs vim

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

$ reset

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`

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.