Is het mogelijk om rechtstreeks vanuit Vim naar het klembord te kopiëren? yy
kopieert alleen dingen naar de interne buffer van Vim. Ik wil kopiëren naar het klembord van het besturingssysteem. Is er een dergelijk commando in Vim of kun je alleen dingen binnen Vim rukken?
Antwoord 1, autoriteit 100%
Het *
register zal dit doen. In Windows zijn +
en *
equivalent. In Unix is er een subtiel verschil tussen +
en *
:
Onder Windows, de * en + registers
gelijkwaardig zijn. Voor X11-systemen,
ze verschillen echter. Voor X11-systemen,
* is de selectie en + is de knipbuffer (zoals klembord).
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
*
is waarschijnlijk wat je meestal wilt, dus ik gebruik *
omdat het in beide omgevingen werkt zoals ik verwacht.
In Linux-distributies moet je eerst vim-gtk
(ook bekend als gvim
) installeren om klembordfunctionaliteit te krijgen. Dit komt omdat niet-gtk vim doorgaans wordt gecompileerd zonder X11-ondersteuning. Dit is om het mogelijk te maken om alleen op console-machines te draaien (vaak servers).
En voor degenen die niet weten hoe ze registers moeten gebruiken bij het trekken of plaatsen, schrijf je gewoon "
en vervolgens de naam van het register. Dus om iets naar het klembordregister te kopiëren typ je "*y
en typ vervolgens "*p
(credit: Kyle Mathews)
Antwoord 2, autoriteit 71%
Op Mac OSX
-
kopieer geselecteerd onderdeel: selecteer visueel tekst (type
V
ofV
in normaal
modus) en typ:w !pbcopy
-
kopieer het hele bestand
:%w !pbcopy
-
plakken vanaf het klembord
:r !pbpaste
Op de meesteLinuxDistro’s kun je het volgende vervangen:
pbcopy
hierboven metxclip -i -sel c
ofxsel -i -b
pbpaste
metxclip -o -sel -c
ofxsel -o -b
— Opmerking:Als geen van deze tools (xsel
enxclip
) vooraf op je distro zijn geïnstalleerd, kun je ze waarschijnlijk vinden in de repo’s
Antwoord 3, autoriteit 33%
In uw vimrc-bestand kunt u aangeven dat het systeemklembord automatisch moet worden gebruikt voor kopiëren en plakken.
Op Windows ingesteld:
set clipboard=unnamed
Op Linux-set (vim 7.3.74+):
set clipboard=unnamedplus
OPMERKING: je moet mogelijk een up-to-date versie van Vim gebruiken om deze te laten werken.
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Antwoord 4, autoriteit 25%
Gebruik het register "+
om naar het systeemklembord te kopiëren (d.w.z. "+y
in plaats van y
).
Je kunt ook plakken vanuit "+
om tekst van het systeemklembord te krijgen (dwz "+p
in plaats van p
).
p>
Antwoord 5, autoriteit 15%
@jacob Dalton heeft dit in een reactie vermeld, maar niemand lijkt te hebben vermeld in een antwoord dat VIM moet worden samengesteld met klembordondersteuning voor een van de hier vermelde suggesties. De mijne was niet op die manier op Mac OS X geconfigureerd en ik moest vim opnieuw opbouwen. Gebruik dit de opdracht om erachter te komen of u het hebt of niet vim --version | grep 'clipboard'
. +clipboard
Betekent dat je goed bent en de suggesties hier zullen voor je werken, terwijl -clipboard
betekent dat je vim moet hercompileren en opnieuw opbouwen.
6, Autoriteit 9%
voor ubuntu – juli 2018
Gebruik het register “+ om naar het systeemklembord te kopiëren (d.w.z. ” + y in plaats van y ).
Op dezelfde manier kunt u plakken van “+ om tekst van het systeemklembord te krijgen (dwz ” + p in plaats van p .
U moet er ook voor zorgen dat VIM is samengesteld met ondersteuning voor het klembord. Probeer:
vim --version | grep .xterm_clipboard -o
en als het -xterm_clipboard (een minprefix) is, dan doe je niet ondersteuning.
Hier zijn enkele instructies voor het ruilen met een werkversie van VIM die klembordondersteuning heeft.
- $ SUDO APT-GET PUNGE VIM
- $ sudo apt-halen autoremove (verwijdert elk
externe vim-afhankelijkheidspakketten van het systeem) - $ sudo apt-get install vim-gnome (of
sudo apt-get install vim-gtk3
voor nieuwere Ubuntu-versies)
Controleer opnieuw met vim --version | grep .xterm_clipboard -o
en u kunt bevestigen dat het klembord nu beschikbaar is (bijv. +xterm_clipboard)
Veel succes.
Antwoord 7, autoriteit 6%
Als je vim gebruikt in MAC OSX, wordt het helaas geleverd met een oudere versie en niet in overeenstemming met de klembordopties. Gelukkig kan homebrew dit probleem gemakkelijk oplossen.
installeer vim:
brew install vim
installatie gui versie van vim:
brew install macvim
start de terminal opnieuw om van kracht te worden.
voeg de volgende regel toe aan ~/.vimrc
set clipboard=unnamed
nu kun je de regel in vim kopiëren met yy
en deze in het hele systeem plakken.
Bijgewerkte methode:
Ik was jarenlang nooit tevreden met de vaste klembordmethode. Het grootste nadeel is dat het je klembordgeschiedenis zal verknoeien, zelfs als je x
gebruikt om te verwijderen. Hier is een betere en elegantere oplossing.
-
Kopieer de tekst [bereik] van vim naar het klembord van het systeem. (Hint: gebruik
V
ofV
om eerst het bereik te selecteren en typ vervolgens de dubbele punt:
om het Ex-commando te activeren):
:[line-range]yank +
bijv.
:5,10y *
(kopieer/trek regels 5-10 naar het*
register van het systeemklembord) -
Plak de inhoud van het systeemklembord in vim op een nieuwe regel:
:put +
Opmerking:
- Als u een woordbereik selecteert, werkt het bovenstaande niet. Gebruik “* y of ” + y om dit visuele blok op te slaan op het klembord. Dit is echter moeilijk te typen, ik denk nog steeds aan alternatieven.
- : Help “* of : Help * + voor meer informatie
brew info vim
kan andere opties zien voor het installeren van VIM. Strelend heeft het geen andere opties.
8, Autoriteit 4%
Ik was niet in staat om naar het systeem van mijn klembord te kopiëren omdat ik dit had in mijn ~ / .vimrc-bestand:
if has('mouse')
set mouse=a
endif
Maar als u deze regel vervolgens toevoegt, kunt u eenvoudig CTRL kbd>+ C kbd>TO wat je ook hebt geselecteerd in je klembord.
vmap <C-c> "+y
Oorspronkelijke discussie en meer details: kopieer tekst uit van vim met set muis = een ingeschakeld
Antwoord 9, autoriteit 3%
de oplossing voor mij was om extra vim te installeren met de klembordoptie:
sudo apt-get install vim-gnome
Antwoord 10, autoriteit 3%
Als u GVim gebruikt, kunt u ook set guioptions+=a
instellen. Dit activeert automatisch kopiëren naar het klembord van tekst die u markeert in de visuele modus.
Nadeel: Houd er rekening mee dat geavanceerde klembordmanagers (met geschiedenis) in dit geval al uw selectiegeschiedenis krijgen ...
Antwoord 11, autoriteit 3%
Je kunt de antwoorden hier vinden
Arch Wiki
Voor Linux:
Allereerst moet je Klembord inschakelen in je vim-versie door te installeren
gvim
.
Vervolgens moet u deze regel op uw .vimrc
-bestand plaatsen.
set clipboard=unnamedplus
12, Autoriteit 2%
Alleen in VIM onder Ubuntu-terminal,
Druk op shift + drag mouse
om een tekst in VIM te selecteren, dan ctrl + shift + c
op de terminal
Dan ctrl + v
op andere editor
13, Autoriteit 2%
Als je vim toevallig zonder +xterm_clipboard
optie wordt gecompileerd, zoals het is standaard in Debian en ik denk dat Ubuntu, je selectie of hele buffer kunt pijpen naar extern programma dat desktopklembord behandelt. Voor xclip
(die u mogelijk eerder moet installeren), is de opdracht :w !xclip -sel clip
14, Autoriteit 2%
Als u XClip een eenvoudige manier van kopiëren van tekst naar het klembord hebt, is het als volgt:
- Yank-tekst die u wilt kopiëren. (
y
opdracht in vanille vim) - Type in
:call system("xclip -selection clipboard", @")
:call system()
Voert een opdracht terminal. Het duurt twee argumenten, de eerste het commando, de tweede wat te pijpen naar die opdracht. Bijvoorbeeld :echom system("head -1", "Hello\nWorld")
Retourneert Hallo (met wat vulling). ECHOM retourneert de uitvoer van een opdracht, bel niet.
xclip -selection clipboard
Kopieert tekst in het systeemklembord, in plaats van het standaard X-klembord, (toegankelijk via de middelste MouE-knop).
@"
retourneert de laatste getreeuwde tekst." is het standaardregister, maar u kunt elk register gebruiken. Om de inhoud van alle registers te bekijken, typt u :registers
.
15
- Zet
set clipboard=unnamed
in uw.vimrc
. - Selecteer wat u wilt kopiëren in
Visual
MODE (druk op V om in te voeren). - Terug naar
Normal
MODE (Druk op Escape [ESC]), druk op Y om te kopiëren. - Als u iets van het OS-klembord wilt plakken, drukt u op P / P in VIM
Normal
MODE.
16
Ik heb hier maanden mee tegen meegemaakt met MacOSX met behulp van toetsenbordsnelkoppelingen.
Ik weet dat de vraag gaat niet over het gebruik van toetsenbordshort. Maar dit kan iemand met dezelfde zorg helpen.
Ik heb aangetroffen dat als je uitdrukt:
Bekijken - & GT; Muisrapportage toestaan
Vanaf Terminal-menu, u kunt naar het klembord kopiëren met
-opdracht kbd>+ C kbd>
opnieuw.
17
Deze vraag heeft al veel antwoorden. Ik voeg mijn manier toe waarvan ik denk dat het snel is.
Snel, u kunt op V
(SHIFT + V) op de actieve visuele modus drukken. In de zichtbare modus kunt u j
en k
gebruiken om de tekst die u wilt kopiëren te selecteren. Gebruik na de selectie
"*y
Nu, geselecteerde tekst wordt gekopieerd naar klembord.
18
Misschien zal iemand het nuttig vinden. Ik wilde onafhankelijk blijven van x klembord en nog steeds in staat zijn om wat tekst tussen twee lopende vim te kopiëren en te plakken. Deze kleine code bewaart de geselecteerde tekst in Temp.txt-bestand voor het kopiëren. Plaats de onderstaande code in uw .vimrc. Gebruik CTRL-C CTRL-V om het werk te doen.
VNOREMAP: W! CP / Dev / NULL ~ / TEMP.TXT & AMP; & AMP; CAT & GT; ~ / temp.txt
NOREMAP: R! CAT ~ / TEMP.TXT
19
Ik ben een vim Newby, maar om alle tekst naar het systeemklembord te kopiëren (bijvoorbeeld als u het wilt plakken op een tekstverwerker of een andere teksteditor zoals Gedit, Mousepad enz ...), in de normale modus:
ggvgy
Of, sneller:
:% y
Zoals voorgesteld, heb ik ook vim-gtkgeïnstalleerd en
set clipboard=unnamedplus
in mijn .vimrc
en alles werkt prima
Als u slechts een deel van de tekst wilt kopiëren, gebruikt u visuele modus (v), selecteert u de tekst die u wilt kopiëren en drukt u op y.
Tot slot raad ik een klembordprogramma aan zoals Clipman (mijn favoriet), Clipit, Parcellite of iets dergelijks.
(Ik gebruik vim 8.0 in Debian Stretch Xfce)
VERGEET MIJN ENGELS! 🙂
Antwoord 20
Als je geen grafische interface voor vim wilt gebruiken en je liever gewoon bij de terminalemulator blijft, is er misschien een veel eenvoudigere aanpak voor dit probleem. In plaats van yank of iets dergelijks te gebruiken, kijk eerst eens naar de documentatie van de terminal die je gebruikt. Ik heb met hetzelfde probleem geworsteld (probeerde +klembord en xclip enzovoort te gebruiken) en uiteindelijk bleek dat het in mijn terminalemulator voldoende is om gewoon op shift te drukken en elke tekst te selecteren die u wilt kopiëren. Dat is het. Heel eenvoudig en geen gedoe met configuratie. (Ik gebruik trouwens urxvt).
Antwoord 21
Ik had een probleem omdat mijn vim klembordniet ondersteunde:
vim --version | grep clip
-clipboard +insert_expand +path_extra +user_commands
+emacs_tags -mouseshape +startuptime -xterm_clipboard
Ik heb vim-gnome geïnstalleerd (die klembord ondersteunt) en heb het opnieuw gecontroleerd:
vim --version | grep clipboard
+clipboard +insert_expand +path_extra +user_commands
+emacs_tags +mouseshape +startuptime +xterm_clipboard
Nu kan ik kopiëren en plakken met respectievelijk "+y en "+p.
Antwoord 22
Mijn oplossing was om de volgende regel in .vimrc te plaatsen:
map <C-y> :w !xclip -sel c <CR><CR>
Het script kopieert de geselecteerde regel (via visuele modus) of de bestandsinhoud (als er geen is geselecteerd) naar het klembord met Ctrl + y. Ik gebruik Manjaro Linux als dat belangrijk is.
Antwoord 23
Ik gebruik mac osx (10.15.3) en ben nieuw bij vim. Ik vond dit zo frustrerend en alle antwoorden hier te ingewikkeld en/of niet van toepassing op mijn situatie. Ik heb dit uiteindelijk op 2 manieren werkend gekregen:
-
sleuteltoewijzing die pbcopy gebruikt: werkt op de oude versie van vim die bij mac wordt geleverd.
Voeg
vmap '' :w !pbcopy<CR><CR>
toe aan uw ~/.vimrc
U kunt nu visueel selecteren en op''
(twee apostrofs) drukken om naar het klembord te kopiëren -
Installeer een nieuwere versie van vim zodat ik toegang heb tot de oplossing die het meest wordt aanbevolen in andere antwoorden:
brew install vim
alias vim=/usr/local/bin/vim
(moet dit toevoegen aan je ~/.bashrc of equivalent)
U kunt nu visueel selecteren en op"+yy
drukken om naar het klembord te kopiëren
Antwoord 24
Ik heb een eenvoudige regel in mijn .vimrc geschreven om het kopiëren werkend te krijgen. Hoop dat dit iemand helpt. Mijn vim is helaas niet geïnstalleerd met ondersteuning voor klembord, dus geen van deze suggesties werkte voor mij. Plak deze regel in uw .vimrc:
map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>
Als je details wilt lezen over wat dit doet, kun je hierover lezen op mijn blog
Antwoord 25
Voor sommige internationale toetsenborden moet u mogelijk op " kbd>+ Space kbd>drukken om een "
te krijgen.
Dus in dat geval zou u moeten op kbd>Space kbd>Y kbd>of "<" < / KBD>RUIMTE kbd>* kbd>Y kbd>
26
Voor OSX, zoals de bovenstaande antwoorden van 10342 hierboven gemaakt, moet u ervoor zorgen dat VIM de klembordfunctie ondersteunt, zei dat de degene die vooraf wordt geleverd met OSX ondersteunt geen klembord, en dat als u dit doet
brew install vim
Het zou werken.
behalve dat het uitvoeren van VI u nog steeds de PreshnitMed OSX-versie uitvoert, niet degene die u hebt geïnstalleerd in Brew.
Om hierover te komen, heb ik eenvoudig mijn VIM-opdracht aan de Brew-versie alias, niet de OSX Standaard één:
alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"
En nu ben ik gouden
27
In mijn instantie selecteren tekst door te markeren (klikken en slepen) met mijn muis veroorzaakte VIM om de visuele modus aan te gaan.
Hoe dan ook op een Mac, de gemakkelijkste oplossing is om fn + mouse click and drag
om te voorkomen dat u de visuele modus invoert.
Als u dit gedrag standaard wilt vermijden, kunt u uw VIMRC
bewerken
28
Ik heb veel moeite gehad bij het kopiëren naar klembord. Binnen VIM is het vrij eenvoudig met behulp van visuele modus, maar als je wilt kopiëren naar de klembord zijn dingen behoorlijk verpest. Ik heb een eenvoudige methode om te kopiëren met behulp van Xclip-hulpprogramma. Hiervoor moet u xclip eerst installeren.
Voor het hele bestand is het heel eenvoudig
xclip -sel clip filename
Maar als u alleen een bepaald bereik van lijnnummers wilt kopiëren
tail -n +[n1] filename | head -n [n2] | xclip -sel clip
U kunt gebruik maken van ~ / .bashrc om dit
te vereenvoudigen
#rangecp copy lines from n1 to n2 from a given file to clipboard
function rangecp()
{
if [ -f $1 ]
then
if [ ! -z $3 ]
then
diff=$(($3 - $2 + 1))
#diff=`expr $3 - $2 + 1`
tail -n +$2 $1 | head -n $diff | xclip -sel clip
elif [ ! -z $2 ]
then
tail -n +$2 $1 | xclip -sel clip
else
echo "Provide a range from [n1] lines to [n2] lines"
fi
else
echo "[ $1 ] file doesn't exist"
fi
}
Dan
source ~/.bashrc
Hoe
te gebruiken
rangecp filename.txt 50 89
rangecp filename.txt 50