Czy istnieje sposób na skopiowanie wszystkich wierszy z otwartego pliku do schowka w edytorze VI. Próbowałem, yGale nie używa schowka do przechowywania tych linii.
Czy to możliwe?
vim
editor
keyboard-shortcuts
vi
Xinus
źródło
źródło
Odpowiedzi:
Powinieneś szarpnąć tekst do rejestru
*
lub :+
gg"*yG
Wyjaśnienie:
gg
aby ustawić kursor na pierwszym znaku pliku"*y
aby uruchomić polecenie szarpnięcia do rejestru*
od pierwszego wiersza, aż ...G
przejść na koniec plikuźródło
"
. po naciśnięciu „a dostajesz á”). Jeśli tak, musisz nacisnąć spację po .:version
vim i poszukaj+xterm_clipboard
flagi. Jeśli jest poprzedzony znakiem minus, to nie będziesz mieć tej funkcji. W takim przypadku możesz samodzielnie skompilować vima lub uruchomić gvim, który zwykle ma włączoną tę funkcję.Posługiwać się:
:%y+
szarpać wszystkie linie.
Wyjaśnienie:
%
odnieść następne polecenie do pracy na wszystkich liniachy
szarpać te linie+
aby skopiować do schowka systemowegoUwaga : w systemie Windows
+
i*
równoważne patrz ta odpowiedź .źródło
:help
aby upewnić się, że naprawdę jesteś w vimie.set clipboard=unnamed
, ale to zadziałało świetnie!E850: Invalid register name
:(na Macu
skopiuj wybraną część: wizualnie zaznacz tekst (wpisz
v
lubV
w trybie normalnym) i wpisz tekst:w !pbcopy
skopiuj cały plik
:%w !pbcopy
przeszłość ze schowka
:r !pbpaste
źródło
pbcopy
to narzędzie dla komputerów Mac. W systemie Linuxxsel
może zamiast tego działać lubclip
w systemie Windows.:%w !pbcopy
nadal działa, jeśli plik jest dłuższy niż wysokość terminala.Schowek jest buforem +. Aby skopiować do schowka, wykonaj "+yi [ruch].
Skopiuje gg"+yGcały plik.
Podobnie, aby wkleić ze schowka, "+p
źródło
Innym łatwym sposobem na skopiowanie całego pliku, jeśli masz problemy z używaniem VI, jest po prostu wpisanie „cat filename”. Wyświetli plik na ekranie, a następnie możesz po prostu przewijać w górę i w dół oraz kopiować / wklejać.
źródło
:!cat %
. I programowo skopiować zawartość pliku do schowka w systemie Mac OS::!cat % | pbcopy
Oto, co robię, aby szarpać cały plik:
źródło
clipboard
zestaw do kopiowania szarpanego tekstu+
.Możesz użyć polecenia „cat”, aby otworzyć plik i użyć myszy do kopiowania
źródło
reset
terminal, a następnie wybierz wszystko i skopiuj. Działa to poprzezssh
sesję.(w odpowiedzi na @rshdev i aby uniknąć konieczności ponownej kompilacji vima z + xterm_clipboard na @nelstrom w komentarzach do OP)
w Ubuntu 11 jest program o nazwie xclip, który działa jak putclip:
nie jest domyślnie instalowany. aby zainstalować, użyj:
źródło
Na Ubuntu 12
możesz spróbować zainstalować
vim-gnome
pakiet:Próbowałem, ponieważ
vim --version
powiedział mi, że flaga Xterm_clipboard będzie wyłączona (wskazane przez - ), która jest potrzebna do korzystania z funkcji schowka.-> instalacja pakietu vim-gnome na Ubuntu 12 również zainstalowała wersję vima opartą na konsoli, która ma włączoną tę opcję (oznaczoną + przed flagą xterm_clipboard)
Na Arch Linux
możesz zainstalować
vim-clipboard
z tego samego powodu.Jeśli uruchamiasz neovim, powinieneś zainstalować
xclip
(zgodnie z wyjaśnieniemhelp clipboard-tool
)źródło
Jeśli używasz Vima w trybie wizualnym, obowiązują również standardowe klawisze wycinania i wklejania, przynajmniej w systemie Windows.
Przynajmniej w terminalu Ubuntu (Gnome) standardowa kopia również działa ( CTRLSHIFTCchociaż nie wydaje się, aby istniał standardowy skrót klawiaturowy dla
select all
(inny niż ALTEpo nim A).źródło
możesz nacisnąć gg, aby zlokalizować swój curser na początku pliku, a następnie nacisnąć yG, aby skopiować całą zawartość od początku do końca (zlokalizowane G) do bufora. powodzenia!
źródło
Wypróbowałem kilka poleceń wspomnianych powyżej przez ludzi. Żaden nie działał. Potem zdobyłem najprostszy z nich wszystkich.
Krok 1:
vi <filename>
Krok 2: Kliknij prawym przyciskiem myszy pasek tytułu okna Kit
Krok 3: Wybierz „Wyczyść przewijanie” (aby uniknąć kopiowania pozostałej sesji SSH)
Krok 4: Ponownie kliknij prawym przyciskiem myszy i wybierz „Kopiuj wszystko do schowka”.
źródło
Window > Settings > lines of scrollback
do 40000 (dostępny również poprzez kliknięcie paska tytułu prawym przyciskiem myszy). Pomaga także używaćcat
zamiast vi, ponieważ przewija on cały tekst.:%y a
Wciąga całą zawartość do bufora vima. Naciśnięciep
w trybie poleceń spowoduje wklejenie zszarpanej zawartości po linii, w której aktualnie znajduje się kursor.źródło
gVim:
ggVG
Zobacz
:help go-a
:źródło
Cóż, wszystkie te podejścia są interesujące, jednak jako leniwy programista używam szarpnięcia całej linii, używając kombinacji liczby +
y
na przykład masz plik kodu źródłowego zawierający łącznie 78 wierszy, możesz wykonać następujące czynności:
gg
aby uzyskać kursor w pierwszej liniiy
-> szarpnie 78 linii poniżej kursora i bieżącej liniiźródło
Nie było koncepcji „schowka” w vi Billa Joy'a, więc nie sądzę, że istnieje wbudowany sposób, aby to zrobić.
Automatyczna funkcja kopiowania wyróżnionego do schowka schowka gVim jest najłatwiejsza lub użyj zewnętrznego programu poprzez:!
Do vima Cygwina używam
Może Ubuntu ma aplikację CLI taką jak putclip?
źródło
Jeśli domyślnie masz palce
CTRL-A CTRL-C
, wypróbuj mapowania z$VIMRUNTIME/mswin.vim
.Mam je zmapowane na
<Leader><C-a>
i<Leader><C-c>
.źródło
Kopiuj cały plik w vimie lub jego zakładkach
następnie przejdź do karty i wklej
i wyciąć cały plik
źródło
Dodałem następujący wiersz do mojego .vimrc
To pozwala mi skopiować cały tekst z Vima do schowka, naciskając
F5
(w trybie poleceń).źródło
Oto polecenie mapy, aby zaznaczyć wszystko do schowka za pomocą CTRL+ a:
Dodaj go do swojego .vimrc i możesz iść ...
źródło
Wiem, że dziesięć lat w tej sprawie powinno zostać uregulowanych, ale dwie pierwsze odpowiedzi nie zadziałały dla mnie, więc kopałem dalej. Na Redhat (zdalny serwer) - Windows 10 (komputer lokalny), jeśli nie możesz zaznaczyć całej rzeczy myszką, utkniesz, ponieważ zwykłe kopie nie działają między schowkami komputera zdalnego i lokalnego.
Tak więc, aby skopiować na zdalnym systemie Linux i wkleić na lokalnym systemie Windows, określ bufor główny za pomocą * i wykonaj ładne podwójne szarpnięcie
Zastosowanie gg" * yy.
źródło
Stworzyłem funkcję do wykonania tej akcji, umieść ją na swoim
~/.vimrc
.OBS: Jeśli używasz neovim, potrzebujesz również jakiegoś menedżera schowka, takiego jak xclip. Aby uzyskać więcej informacji, wpisz neovim
:h checkhealth
Ważne jest również, aby wspomnieć, że nie zawsze jest proste
y
będzie skopiować do schowka, tak aby każdy kanał kopiowania+
którym jest „Schowek Rejestracja” spróbować zestawu::set clipboard=unnamed,unnamedplus
. Aby uzyskać więcej informacji, zobacz::h unnamed
.Tutaj więcej informacji na temat vim wiki.
źródło
Kliknij lewy przycisk myszy, przeciągnij przez sekcję, którą chcesz skopiować i zwolnić. Kod jest automatycznie kopiowany do schowka.
źródło
vi
sposobem).Nie mogłem skopiować plików przy użyciu powyższych odpowiedzi, ale mam kit i znalazłem obejście Quora.
Uwaga: kopiuje wszystkie drukowane znaki z tej sesji do pliku dziennika, więc w końcu będzie duże. W takim przypadku usuń plik dziennika i cat plik docelowy, aby zawartość tego pliku została skopiowana na komputer.
źródło