In vim, kiedy używam
:r !ls somefilename
wstawia wyjście tego polecenia w nowym wierszu poniżej bieżącego wiersza.
Jeśli zrobię
let @a = system("ls")
i później
"ap
nadal wstawia wyjście w nowym wierszu poniżej bieżącego wiersza.
Czy istnieje sposób, aby vim wstawiał wyjście w bieżącej lokalizacji?
command-line
vim
deshmukh
źródło
źródło
Odpowiedzi:
Możesz wkleić zawartość bufora schowka między znakami za pomocą Ctrl-R * w trybie wstawiania (i podobne podejście w przypadku innych buforów). Więc jeśli możesz dostać polecenie systemowe do bufora, powinieneś być ustawiony. (Źródło: https://stackoverflow.com/questions/1491135/paste-multi-line-string-into-gvim-at-cursor-position ).
:let @a=system("ls -l")
umieści wyjście zls -l
rejestrua
. Następnie możesz go wkleić (w trybie wstawiania) za pomocą^R-a
.źródło
*
), więc jeśli potokujesz wyjście polecenia do schowka, będzie ono"*
do użycia.odczyta dane wyjściowe z polecenia i wstawi je do wiersza pod bieżącym wierszem. W ten sposób programuje się vi, nie można zmienić zachowania.
Ale powiedzieć, że jeśli jesteś w linii numer 3. Jeśli spróbujesz
:r !date
. Wstawi wartość daty do wiersza 4.Jeśli chcesz, aby wartość daty pojawiła się w wierszu nr 3, spróbuj
:2r !date
wstawić wartość daty w wierszu nr 3.źródło
Oto alternatywny sposób wklejania danych wyjściowych z zewnętrznego polecenia przed kursorem:
lub użyj wyrażenia register (
:help @=
):następnie uderzył P. Lub krócej poprzez:
źródło
:exe
), które może być zawarte w poleceniach.