Pracuję z dwoma plikami i muszę skopiować kilka wierszy z jednego pliku i wkleić do innego pliku. Wiem, jak skopiować (yy) i wkleić (p) w tym samym pliku. Ale to nie działa dla różnych plików. Jak to się robi?
Czy jest też sposób na wycięcie i wklejenie? Próbowałem google, ale większość zasobów mówi tylko o kopiowaniu i wklejaniu.
vim
copy-paste
vi
cut
macha
źródło
źródło
Odpowiedzi:
Ponieważ wiesz już, jak wycinać / szarpać tekst, oto kilka pomysłów na wklejenie go z powrotem do innego pliku:
:e /path/to/other/file
) i wklej goOtwórz oba pliki razem w podzielonym oknie i nawiguj między nimi za pomocą Ctrl+ w, Up/ Downalbo:
vi -o /path/to/file1 /path/to/file2
źródło
Ctrl
+w
,s
.:sp myfile
dzielące poziomo i otwierające określony plik, ale jak mam to zrobić, jeśli wolę podzielić okno w pionie?Jeśli używasz Vima w systemie Windows, możesz uzyskać dostęp do schowka (kopiowanie / wklejanie MS) za pomocą:
"*dd - wytnij linię (lub 3dd, aby wyciąć trzy linie)
"*yy - skopiuj linię (lub 3 lata, aby skopiować trzy linie)
"*p - wklej linię (linie) po linii za kursorem
"*P - wklej wiersze przed wierszem
Pozwala wklejać między osobnymi oknami Vima lub między aplikacjami Vima i PC ( Notatnik , Microsoft Word itp.).
źródło
+
jako rejestr schowka systemowego na wielu platformach (Windows i Linux) vs.*
, który jest tylko Windows (+
działa tak samo w Windows jak*
).Użyj odmian
d
lubiędd
ciąć.Aby zapisać zakres wierszy w innym pliku, możesz użyć:
Gdzie
<n>
i<m>
są liczbami (lub symbolami), które oznaczają zakres linii.Aby korzystać ze schowka na pulpicie, spójrz na
+g
polecenia.źródło
ma
przejdź do ostatniej liniimb
. Następnie dodaj'
literę do litery znaku, gdy używasz powyższego polecenia::'a,'b w filename
Możesz otworzyć inny plik i wpisać
:r file_to_be_copied_from
. Lub możesz buforować. Lub przejdź do pierwszego pliku, przejdź do wiersza, który chcesz skopiować, wpisz"qY
, przejdź do pliku, który chcesz wkleić i wpisać"qP
."
nazwa_buforu, kopiuje do bufora.Y
jest szarpany iP
jest wprowadzany. Mam nadzieję, że to pomaga!źródło
Oto jeden ze sposobów, aby to zrobić;
Oba pliki mogą być również widoczne. Podziel ekran za pomocą np . Ctrl+ w s.
Jeśli chodzi o cięcie, dwycina i umieszcza wycięte elementy w buforze szarpania. dd„wytnie” linię.
źródło
Są to świetne sugestie, ale jeśli znasz lokalizację tekstu w innym pliku, skorzystaj z sed z łatwością.
:r! sed -n '1,10 p' < input_file.txt
Spowoduje to wstawienie 10 linii do już otwartego pliku w bieżącej pozycji kursora.źródło
:r ! head -n2 file.py
Podczas edycji pliku zaznaczaj miejsca, w których chcesz używać początku i końca
ma
- wyznaczaa
znakmb
- wyznaczab
znakNastępnie, aby skopiować to do innego pliku, po prostu użyj
w
polecenia:źródło
Aktualizacja 2017-05:
Właśnie odkryłem, że jeśli dodasz następujący wiersz do pliku vimrc,
wtedy Vim używa schowka systemowego.
Właśnie odkryłem, że sposób yank nie będzie działał w sposób, w jaki kopiuję zawartość między różnymi oknami instancji Vima. (Przynajmniej nie działa w oparciu o moją wiedzę Vima. Nie wiem, czy jest inny sposób, aby to umożliwić).
Sposób yank działa tylko w sposób, w którym wiele plików jest otwieranych w tym samym oknie, zgodnie z moim testem.
Jeśli chcesz to zrobić, lepiej użyj sposobu wycinania i kopiowania w systemie operacyjnym, takiego jak Ctrl+ x, Ctrl+ c(w systemie Windows).
źródło
Te remapy działają dla mnie jak urok:
Tak więc, gdy jestem w trybie wizualnym, wybieram linie, które chcę i naciśnij Ctrl+, ca następnie Ctrl+, vaby wstawić tekst do pliku odbiorcy. Możesz również użyć „* y”, ale myślę, że czasami trudno to zapamiętać.
Jest to również przydatne do kopiowania tekstu z Vima do schowka.
Źródło: Kopiuj i wklej między sesjami przy użyciu pliku tymczasowego
źródło
Kopiowanie tekstu między dwoma buforami (== plików), które są otwarte w tej samej instancji Vima, nie stanowi problemu:
Po prostu szarpnij jednym buforem za pomocą y (zakładając, że zaznaczyłeś wcześniej obszar do skopiowania w trybie wizualnym), a następnie wklej do drugiego buforu za pomocą p. Działa również z różnymi kartami, o ile są one w tej samej instancji Vima.
Jak otworzyć dwa pliki w tej samej instancji Vima, zależy od twojego systemu:
vim file1 file2
--remote-silent
opcji, aby upewnić się, że wszystkie pliki są otwierane w tym samym wystąpieniuJeśli otworzyłeś dwa pliki w dwóch różnych instancjach Vima, musisz przejść do schowka systemowego: w pierwszej instancji Vim przeciągnij tekst do schowka systemowego za pomocą
"+y
(ponownie zaznacz obszar, który ma być szarpany w trybie wizualnym przed ), a następnie przejść do drugiego Vima i wklej schowka tam:"+p
.źródło
Cel : zapisać fragment jednego pliku w innym pliku.
Rozwiązanie :
Zapisz zaznaczony tekst w nowym pliku. Wpisz :wSpacei nazwę nowego pliku. Właściwie to zobaczysz
:'<,'>w new.txt
Następnie wciśnij Enter
źródło
Mój scenariusz był taki, że muszę skopiować n liczby wierszy na środku, n nieznanych, z pliku 1 do pliku 2.
źródło
:echo has('clipboard')
powinien wrócić1
0
(na przykład Mac OS X, co najmniej v10.11 (El Capitan), v10.9 (Mavericks) i v10.8 (Mountain Lion) - zawiera wersję Vima bez obsługi schowka), musisz zainstalować Wersja Vima z obsługą schowka, powiedzmy przezbrew install vim
(nie zapomnij ponownie uruchomić terminali po instalacji)PS:
set mouse+=a
do swojego.vimrc
- pozwoli ci wybierać linie w Vimie za pomocą myszy, nie zaznaczając obcych elementów (takich jak numery linii itp.) UWAGA: zablokuje możliwość kopiowania tekstu zaznaczonego myszką do schowka systemowego od Vima .źródło
Przykład: plik A i plik B - uruchom plik A w wierszu 25, skopiuj 50 wierszy i wklej do pliku B.
źródło
Poniższa opcja działa przez większość czasu, a także do wklejania później.
Wyszarpane linie zostaną zapisane w buforze
'x'
. Można go użyć w dowolnym miejscu w edycji.Aby wkleić linie w drugim pliku,
Przykład: Wpisz poniższe polecenie w bieżącej edycji
Zakończ operację
otwórz plik 1:
-teraz otwórz drugi plik z bieżącej edycji
-przesuń kursor do linii, w której musisz wkleić
- Linie z bufora
'*a*'
zostaną skopiowane po bieżącej pozycji kursoraźródło
Jeśli chcesz skopiować część pliku i wkleić tę zawartość w środku innego pliku, możesz to zrobić.
Przykład:
Lub
Przykład:
Teraz linie są kopiowane do innego pliku. Jeśli chcesz usunąć te linie po skopiowaniu, możesz to zrobić
Lub
Teraz przejdź do innego pliku. Następnie trzymaj kursor na linii, w której chcesz wkleić.
Rodzaj
Teraz wkleja się tutaj zawartość pliku tymczasowego. Możesz usunąć plik tymczasowy z samego wiersza poleceń po wklejeniu zawartości.
Pomoże to, jeśli chcesz skopiować i wkleić kilka razy.
źródło
Innym sposobem może być otwarcie dwóch plików w dwóch podzielonych buforach i użycie następującego „fragmentu” po wizualnym zaznaczeniu interesujących linii.
źródło
Wejdź do trybu poleceń i uruchom
Np. Aby wyodrębnić linie
20-30
zfilename
aktualnie otwartego plikuźródło