Is er een manier om alle regels van het geopende bestand naar het klembord te kopiëren in de VI-editor. Ik heb yGgeprobeerd, maar het gebruikt geen klembord om die regels op te slaan.
Dus is het mogelijk?
Antwoord 1, autoriteit 100%
Je moet de tekst naar de *
of +
registreert:
gg"*yG
Uitleg:
gg
om de cursor naar het eerste teken van het bestand te brengen"*y
om een ruk-commando naar het register*
te starten vanaf de eerste regel, tot…G
om naar het einde van het bestand te gaan
Antwoord 2, autoriteit 92%
Gebruik:
:%y+
om alle regels te rukken.
Uitleg:
%
om naar het volgende commando te verwijzen om op alle regels te werkeny
om aan die regels te trekken+
om naar het systeemklembord te kopiëren
NB: In Windows zijn +
en *
equivalent zie dit antwoord.
Antwoord 3, autoriteit 13%
op Mac
-
kopieer geselecteerd onderdeel: selecteer visueel tekst (type
V
ofV
in normaal
modus) en typ:w !pbcopy
-
kopieer het hele bestand
:%w !pbcopy
-
verleden van het klembord
:r !pbpaste
Antwoord 4, autoriteit 8%
Het klembord is buffer +. Om naar het klembord te kopiëren, doe je "+yen [beweging].
Dus gg"+yGkopieert het hele bestand.
Evenzo, om vanaf het klembord te plakken, "+p
Antwoord 5, autoriteit 8%
Een andere gemakkelijke manier om het hele bestand te kopiëren als je problemen hebt met VI, is door gewoon “cat bestandsnaam” te typen. Het echoot het bestand naar het scherm en dan kun je gewoon op en neer scrollen en kopiëren/plakken.
Antwoord 6, autoriteit 5%
Dit is wat ik doe om het hele bestand te rukken:
ggVGy
Antwoord 7, autoriteit 4%
U kunt de opdracht “cat” gebruiken om het bestand te openen en de muis gebruiken om te kopiëren
Antwoord 8, autoriteit 2%
(in antwoord op @rshdev, en om te voorkomen dat vim opnieuw moet worden gecompileerd met +xterm_clipboard per @nelstrom in reacties op OP)
er is een programma genaamd xclip dat werkt als putclip op Ubuntu 11:
:%!xclip -sel clip
u
het is niet standaard geïnstalleerd. om te installeren, gebruik:
sudo apt-get install xclip
Antwoord 9, autoriteit 2%
Op Ubuntu 12
je zou kunnen proberen het pakket vim-gnome
te installeren:
sudo apt-get install vim-gnome
Ik heb het geprobeerd, omdat vim --version
me vertelde dat de vlag xterm_clipboarduitgeschakeld zou zijn (aangegeven door –), wat is nodig om de klembordfunctionaliteit te gebruiken.
-> het installeren van het vim-gnomepakket op Ubuntu 12 installeerde ook een console-gebaseerde versie van vim, die deze optie heeft ingeschakeld (aangegeven door een +voor de xterm_clipboard vlag)
Op Arch Linux
u mag om dezelfde reden vim-clipboard
installeren.
Als u neovim gebruikt, moet u xclip
installeren (zoals uitgelegd door help clipboard-tool
)
Antwoord 10
je kunt op gg drukken om je cursor naar het begin van het bestand te lokaliseren, druk dan op yG om alle inhoud van het begin tot het einde (G te vinden) naar buffer.good luck te kopiëren!
Antwoord 11
Als je Vim in de visuele modus gebruikt, zijn de standaard knip- en plaktoetsen ook van toepassing, in ieder geval met Windows.
- CTRLAbetekent “Markeer het hele bestand.
- CTRLCbetekent “Kopieer de selectie.
- ESCbetekent “Deselecteer, zodat uw volgende toetsaanslag niet het hele bestand vervangt 🙂
Tenminste onder Ubuntu-terminal (Gnome) werkt de standaardkopie ook (CTRLSHIFTC, hoewel er geen een standaard sneltoets zijn voor select all
(behalve ALTEgevolgd door A).
Antwoord 12
:%y a
Roept alle inhoud naar de buffer van vim,
Als u in de opdrachtmodus op p
drukt, wordt de verwijderde inhoud geplakt achter de regel waar uw cursor op dat moment staat.
Antwoord 13
gVim:
:set go=a
ggVG
Zie :help go-a
:
'a' Autoselect: If present, then whenever VISUAL mode is started,
or the Visual area extended, Vim tries to become the owner of
the windowing system's global selection. This means that the
Visually highlighted text is available for pasting into other
applications as well as into Vim itself. When the Visual mode
ends, possibly due to an operation on the text, or when an
application wants to paste the selection, the highlighted text
is automatically yanked into the "* selection register.
Thus the selection is still available for pasting into other
applications after the VISUAL mode has ended.
If not present, then Vim won't become the owner of the
windowing system's global selection unless explicitly told to
by a yank or delete operation for the "* register.
The same applies to the modeless selection.
Antwoord 14
Ik heb een paar van de commando’s geprobeerd die mensen hierboven hebben genoemd. Geen werkte.
Toen kreeg ik de eenvoudigste van allemaal te pakken.
Stap 1: vi <filename>
Stap 2: Klik met de rechtermuisknop op de titelbalk van het Putty-venster
Stap 3: Selecteer “Scrollback wissen” (om te voorkomen dat u de rest van uw SSH-sessie kopieert)
Stap 4: Klik nogmaals met de rechtermuisknop en selecteer “Alles naar klembord kopiëren”.
Antwoord 15
Kopieer het hele bestand in de vim of de tabbladen
y G
verplaats vervolgens naar een tabblad en plak door
p
en om het hele bestand te knippen, gebruik
d G
Antwoord 16
Er was geen concept van “klembord” in Bill Joy’s vi, dus ik denk niet dat er een ingebouwde manier is om het te doen.
gVim’s automatische kopieer-alles-gemarkeerde-naar-het-klembord-functie is het gemakkelijkst of gebruik een extern programma via :!
Voor Cygwin’s vim gebruik ik
:%!putclip
u
Misschien heeft Ubuntu een CLI-app zoals putclip??
Antwoord 17
Nou, al deze benaderingen zijn interessant, maar als luie programmeur gebruik ik yank all line door een combinatie van nummer + y
te gebruiken
je hebt bijvoorbeeld een broncodebestand met in totaal 78 regels, je kunt het als volgt doen:
gg
om de cursor op de eerste regel te krijgen- voeg 78 +
y
in –> het trekt 78 regels onder je cursor en huidige regel
Antwoord 18
Ik heb de volgende regel toegevoegd aan mijn .vimrc
nnoremap <F5> :%y+<CR>
Hierdoor kan ik alle tekst in Vim naar het klembord kopiëren door op F5
te drukken (in opdrachtmodus).
Antwoord 19
Als uw vingers standaard op CTRL-A CTRL-C
staan, probeer dan de toewijzingen van $VIMRUNTIME/mswin.vim
.
" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y
" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG
Ik heb ze toegewezen aan <Leader><C-a>
en <Leader><C-c>
.
Antwoord 20
Ik weet dat dit over tien jaar geregeld zou moeten zijn, maar de eerste twee antwoorden werkten niet voor mij, dus ik bleef graven. Op een Redhat (remote server) – Windows 10 (lokale machine), als je niet alles met een muis kunt selecteren, zit je vast omdat de gebruikelijke kopieën niet werken tussen de klemborden van de externe en de lokale machine.
Dus, om te kopiëren op de externe Linux en te plakken op de lokale Windows, specificeer de primaire buffer met de *en doe een mooie dubbele ruk
Gebruik gg"* yy kbd>.
Antwoord 21
Hier is een kaartcommando om alles naar het klembord te selecteren met CTRL+a:
"
" select all with control-a
"
nnoremap <C-a> ggmqvG"+y'q
Voeg het toe aan uw .vimrcen u kunt aan de slag...
Antwoord 22
U kunt een afkorting gebruiken, zoals deze:
noremap <F6> :%y+<CR>
Het betekent dat wanneer je op F6 drukt in de normale modus, het het hele bestand zal kopiëren en aan het klembord zal toevoegen.
Of u kunt gewoon in de normale modus :%y+
typen en vervolgens op Enter
drukken.
Antwoord 23
Hoewel veel van de bovenstaande antwoorden uitstekend zijn, werkte geen van die oplossingen voor mij omdat ik de standaard VIM-installatie gebruik die bij Ubuntu 16.04 werd geleverd en de klembordoptie niet standaard was geïnstalleerd. Ik wilde de tekst ook in een extern programma plakken.
Oplossing die werkte: met de standaardterminal van Ubuntu kunt u de volledige inhoud markeren door op Edit
te drukken en vervolgens op select all
.
Antwoord 24
Ik heb een functie gemaakt om deze actie uit te voeren, plaats deze op uw ~/.vimrc
.
fun! CopyBufferToClipboard()
%y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()
OBS: als je neovim gebruikt, heb je ook een klembordmanager nodig, zoals xclip. typ voor meer informatie neovim :h checkhealth
Het is ook belangrijk om te vermelden dat niet altijd een eenvoudige y
naar het klembord zal kopiëren, om elke kopie-feed +
die "Clipboard Register" is, te proberen in te stellen: :set clipboard=unnamed,unnamedplus
. Voor meer informatie zie: :h unnamed
.
Hiermeer informatie over vim wikia.
Antwoord 25
Ik kon geen bestanden kopiëren met de bovenstaande antwoorden, maar ik heb stopverf en ik heb een oplossing gevonden voor Quora.
- Wijzig de instellingen van uw PuTTY-sessie, ga naar logboekregistratie en wijzig het in "afdrukbare tekens". Stel het logbestand in
- Doe een kat van het betreffende bestand
- Ga naar het bestand dat je in stap #1 hebt ingesteld en je hebt je inhoud in het logbestand.
Opmerking: het kopieert alle afgedrukte karakters van die sessie naar het logbestand, zodat het uiteindelijk groot wordt. Verwijder in dat geval het logbestand en cat het doelbestand zodat u de inhoud van dat specifieke bestand naar uw computer kopieert.
Antwoord 26
Klik met de linkermuisknop, sleep over het gedeelte dat u wilt kopiëren en laat los. De code wordt automatisch naar het klembord gekopieerd.