W systemie Linux edytując file_B
w vimie chcę dodać linię 10-25 file_A
. Przykład: jeden ma cały zestaw dokumentów HTML z tym samym nagłówkiem i tak, można utworzyć szablon i zacząć od tego, ale nadal:
Szukam prostego [i eleganckiego] sposobu wstawienia zakresu wierszy z jednego pliku i dodania go do pliku, który aktualnie edytuję. In vim.
Rozwiązania, które znalazłem do tej pory, ale nie są dokładnie tym , czego szukam
- wewnątrz
file_B
polecenia:read file_A
doda * cały plik_A * do pliku_B. Zbyt wiele - vim zawiera kopiuj i wklej - ale do tego musi być otwarty
file_A
- w pliku_A
:10,25w! file_B
„wyśle” podany zakres wierszy dofile_B
.
Wydaje się to dość zbliżone do kopiowania i wklejania - w vimie można otwierać wiele okien
Ale kiedy pracuję na 8-calowym ekranie, wiele okien utrudnia orientację
Ponieważ nie byłem w stanie znaleźć wygodnego rozwiązania, zastanawiam się, czy po prostu coś źle zrozumiałem lub sposoby, które do tej pory znalazłem, są powszechnie stosowane i traktowane jako standardowe.
linux
vim
copy-paste
erch
źródło
źródło
vim
. Ale wydaje się to poza zasięgiem. I naprawdę zastanawiam się, czy można to osiągnąć tylko za pomocą zewnętrznych poleceń, ponieważ o ile mi sięvim
teraz udało , doszedłem do niewielkich ograniczeń do tej pory .Odpowiedzi:
Najlepszym rozwiązaniem, jakie mogę wymyślić, jest zewnętrzne połączenie
sed
i połączenie z tym:read !
źródło
:r
skrót odread
vim. Nie mam wiedzy na tematsed
i jak z niego korzystać. Oczywiście zastąpiłemfileB
właściwym plikiem :):10r
itp. Umieści zawartość z dziesiątej linii na [tak długo, jak to istnieje]. Teraz działa jak urok. Świetny. Wielkie dzięki!:r!sed 10,25\!d
. Pamiętaj, że nie potrzebujesz-e
cudzysłowów, więc możesz napisać je również:r!sed -n 10,25p
w skrócie.:r sed '10,$\!d;25q'
aby uniknąć odczytu całego pliku.