Jak zaznaczyć cały tekst w Vi / Vim?


193

Korzystanie z narzędzia VI do edycji plików konfiguracyjnych.

Jak mogę zaznaczyć cały tekst w pliku (około 1000 wierszy), skopiować go, a następnie wkleić do Dokumentów Google?

Odpowiedzi:


158

Najprostszym i najszybszym sposobem jest użycie: : % y +a następnie przejdź do Dokumentów Google (lub gdziekolwiek) i wklej. Wyjaśnienie:

  • % odnieść następne polecenie do pracy na wszystkich liniach
  • y  szarpać te linie
  • +  aby skopiować do schowka systemowego

Innym sposobem jest, g g " + y Gale prawdopodobnie przyznasz, że powyższe jest szybsze i łatwiejsze.


10
@Tuxmentat czy możesz wyjaśnić, co robi każdy klawisz:%y+
Jas

10
Ta odpowiedź byłaby lepsza, gdyby wyjaśniła, co robi każdy klawisz dla obu sekwencji.
AsksAnyway

6
Moje najlepsze przypuszczenie: „:” oznacza, że ​​używamy polecenia „ex mode” (tak myślę). W każdym razie jest to polecenie. „%” to specjalny specyfikator zakresu wiersza poleceń, który określa cały plik. „y” oznacza wszystko, a „+” określa rejestr schowka . : help <polecenie> pomogło mi to rozgryźć.
Hawkeye Parker

11
muszę robić coś złego. I typu :%y+, a ja dostaćE488: Trailing characters
Johny dlaczego

24
Otrzymuję komunikat „E850: nieprawidłowa nazwa rejestru”. Druga metoda działała dobrze podczas kopiowania, ale nie trafia do schowka systemowego na Ubuntu 16.04 (przynajmniej dla mnie - mam plik .vimrc, który może mieć wpływ na różne rzeczy).
EntangledLoops

95

Wiele udzielonych odpowiedzi również pociąga za sobą wybór, którego nie szukałem.

Używam ggVGdo tego celu (musi być uruchomiony w trybie normalnym). To polecenie zaznacza tylko cały tekst w dokumencie.

Przesunąłem nawet Ctrl+Aw tym celu, ponieważ tak naprawdę nie muszę zwiększać liczby całkowitej za pomocą skrótu ( Ctrl+Amapa domyślna ).

Po prostu dodaj to do .vimrc:

map <C-a> <esc>ggVG<CR>

Ma <esc>po pierwsze, aby upewnić się, że użytkownik jest w trybie normalnym.


2
Dokładnie tego szukałem i fajnie jest zobaczyć, że Ctrl + A nie jest domyślnie zajęty w vimie. Mam nadzieję, że nie ma żadnych skutków ubocznych.
Nikos Alexandris

2
Ja osobiście używam ggVG, ale gg0vG$może być bardziej odpowiednie, ponieważ dokładniej odwzorowuje „normalną” operację Ctrl + A.
Sheharyar

39

Możesz użyć, cat filea następnie wybrać dane wyjściowe oraz skopiować i wkleić, jeśli chcesz wkleić go do przeglądarki.

W przypadku vi możesz zaznaczyć cały tekst i zapisać go w nowym pliku:

shift v  -- visual mode
shift g -- jump to eof
"*y -- yank select text
:e my_new_file -- create a new file
"*p -- paste into a new file

Teoretycznie powinno to działać zarówno w systemie Linux, jak i Windows - wypróbowałem to na komputerze Mac, ale nie działa.


1
Aby wkleić do przeglądarki internetowej, cat filemożna to zrobić. shift vJedyna metoda kopii do wewnętrznego bufora Vi.
Aleksandr Levchuk

nie, jeśli używasz schowka systemowego, który korzysta z rejestru * - ale działa to tylko na X i słyszałem w systemie Windows - więc jeśli potrzebujesz ssh, potrzebujesz -X - aby sprawdzić, czy vim obsługuje to w vimie -: ustaw schowek + = unnamed

Czy jest jakaś alternatywa, aby to zrobić bez tworzenia nowego pliku. Jeśli edytujemy na żywo na serwerze, musimy zachować kod zapasowy na komputerze lokalnym, abyśmy mogli przywrócić go z powrotem.
NJInamdar

+1 dla kota i wybierz w szpachli. Oczywiście nie będzie działać w przypadku dużych plików i nie jest najbardziej przyjazną dla użytkownika metodą. Ale do kopiowania małych plików skryptów, które wychodzą poza okno ekranu, jest wystarczające.
Arnis Juraga



7

Używam Vima 7.4 w środowisku CentOS-7. Który pracował mnie do zaznaczenia całego tekstu

:%y

Potem tylko pw następnym pliku, w którym chcę pełną kopię.

Lub

Możesz użyć polecenia cat.

cat copyfile > pastefile

To repozytorium git zawiera także kilka innych przydatnych poleceń.


3

W przypadku komputera Mac użyj pbcopy (kopia z tektury):

cat file.txt | pbcopy

Zawartość pliku.txt znajduje się teraz w schowku w celu wklejenia do innej aplikacji (np. Przeglądarki).

Możesz również wkleić zawartość schowka do pliku za pomocą pbpaste:

pbpaste > file.txt

Chociaż nie dotyczy to w szczególności vi, osiąga ten sam cel na komputerze Mac.


1

Jeśli używasz pulpitu Linux, możesz załadować go do schowka za pomocą xclip lub xsel. W przypadku czegoś o takim rozmiarze możesz po prostu użyć funkcji przesyłania w dokumentach Google.


1

Innym sposobem byłoby:

Naciskasz vklawisz na klawiaturze i zmieniasz VIM w VISUAL

Następnie zaznacz cały tekst, przewijając w dół

^+ INSERTdo skopiowania

SHIFT+, INSERTaby wkleić tekst w dowolnym miejscu w Dokumentach Google.




0

Użyj następującego polecenia.

cat <your file name>

Powtórzy treść pliku. Teraz wybierz, przewiń, skopiuj, wklej.
Koniec gry

Dawny.:

cat bobis.txt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.