W Vimie, jaki jest elegancki sposób na pobranie danych z wiersza poleceń?

14

Jeśli jestem w Vimie i chcę uzyskać dane wyjściowe z wiersza poleceń i przypiąć je do mojego bieżącego pliku, mogę uruchomić to:

:! echo "foo" >> %

To doda „foo” do mojego bieżącego pliku i będę musiał go ponownie załadować.

Czy jest na to bardziej elegancki sposób - czy dane wyjściowe trafiają do bufora, który mogę na przykład wkleić?

Nathan Long
źródło

Odpowiedzi:

24

Tak:

:r !echo "foo"

Widzieć

:help :r!

Spowoduje to wstawienie wyniku polecenia po bieżącym wierszu. Jeśli chcesz przechwycić dane wyjściowe polecenia do rejestru, który możesz wkleić, możesz to zrobić:

:let @a = system('echo "foo"')

Teraz wyjście polecenia (w tym znak nowej linii) jest w rejestrze a. Widzieć

:help let-@
:help system()
garyjohn
źródło
Po :rzapoznaniu się z pomocą i eksperymentowaniu, widzę, że 1) jest skrótem od „czytaj” (więc możesz wpisać „czytaj” lub po prostu „r” i to jest to samo polecenie), a 2) wykonanie :r path/to/foo.txtspowoduje wstawienie zawartości tego plik za kursorem.
Nathan Long,
Poza tym - nie wiedziałem o systempołączeniu. To cudownie!
Nathan Long
1
Nie wiedziałem też, że można ręcznie ustawić rejestry takie jak let @a = 'foo'. Jednym fajnym pomysłem byłoby, po przeszukaniu i zamianie, możesz zapisać wyszukiwane hasło w rejestrze w celu wklejenia w innym miejscu, wykonując let @a = @/- „spraw, aby rejestr zawierał to, co zawiera / register, a mianowicie moje ostatnie wyszukiwanie”.
Nathan Long
1
@Nathan Long: Nie ma za co. Inne sposoby wklejania z / register to: 1) wykonanie w :put /celu umieszczenia zawartości rejestru w następnym wierszu oraz 2) w trybie wstawiania wpisz Ctrl-R, a następnie /wstaw zawartość rejestru w pozycji kursora. Aby uzyskać więcej informacji na ten temat, zobacz :help :puti :help i_CTRL-R.
garyjohn