Jag försöker kopiera och klistra in lite text från vim. Jag gör v för att gå in i visuellt läge, sedan y när jag valt mitt block.
Det verkar som om du kopierar texten till vim ”s urklipp, eftersom p klistrar in den. Men i ett annat program (t.ex. Chrome) klistrar du inte in rätt text. Hur kopierar jag text till rätt klippbord?
Svar
Följande fungerar endast om vim --version
indikerar att du har +xterm_clipboard
-funktion. Om inte, måste du installera extra paket eller kompilera om vim med den funktionen tillagd.
Det finns faktiskt två alternativ för detta:
"+y
kopior till den ”vanliga” urklippsbufferten (så att du kan klistra in med Ctrl + V, högerklicka och välj ”Klistra in” etc), medan
"*y
kopior till X11-valet – du kan klistra in från den här bufferten med hjälp av mittklick.
Observera att "*
och "+
arbeta åt båda hållen. Så om du har valt text i ett annat program kan du klistra in det i vim med "*p
och om du har kopierat lite text (med hjälp av, säg Ctrl-C) kan du klistra in det till vim med "+p
.
Kommentarer
Svar
Om du använder vim> = 7.3 .74, då kan du faktiskt sätta detta i din vimrc:
set clipboard=unnamedplus
Som automatiskt använder +
buffert (system Urklipp) som standard. För att skicka (kopiera) använder du bara det vanliga y
-kommandot osv.
Jag tyckte att detta beteende var ganska irriterande, men som kommandon som d
placera texten de arbetar med i standardbufferten, vilket innebar att jag inte kunde göra en snabb dd
och klistra in en rad från internet , till exempel.
Kommentarer
- + är en urklippsregisator
- Angående din sista punkt,
dd
betyder ” skär en rad ”, så det skulle vara det förväntade beteendet. I sällsynta fall när du vill för att faktiskt radera en rad i glömska,"_dd
gör tricket. - även som @HamishDowner noterar i sitt svar: Följande fungerar bara om
vim --version
indikerar att du har+xterm_clipboard
-funktion. Om inte, måste du installera extra paket eller kompilera om vim med den funktionen tillagd.
Svar
Håll ner skiftet -tangenten och välj text med muspekaren.
Text kommer att kopieras till urklipp.
Detta fungerar även för att klistra in från klippbordet i till vim.
För att vara tydlig fungerar det för vim
som körs i en terminal som xterm
.
Kommentarer
- @LoopSpace för flerlinjeval detta kommer också att kopiera radnummer även när
set nu
är aktiverat . Så du skulle förmodligen vilja växla radnummer med någon genväg eller köra:set nonu
-kommandot före varje val - På MAC håller du ner alternativtangenten och väljer text med muspekare
- Fungerar inte ’ för mig med vim 8.0 + gnome-terminal
- Lösning inte kompatibel med flervåningsvillkor som tmux.
- Detta kopieras inte till urklipp, det kopieras till det primära .Se skillnaden i Wiki-artikeln för Urklipp Arch .
Svar
Jag tycker att kommandona "+gP
och "+y
är mycket svåra att använda. Så jag har kartlagt Ctrl-Y
för att jag gick in i klippbordet och Ctrl-P
för att klistra in från urklipp. Lägg till detta till .vimrc
nnoremap <C-y> "+y vnoremap <C-y> "+y nnoremap <C-p> "+gP vnoremap <C-p> "+gP
Svar
När jag kollade min vim stödde inte urklipp:
vim --version | grep clip -clipboard +insert_expand +path_extra +user_commands +emacs_tags -mouseshape +startuptime -xterm_clipboard
Jag installerade vim-gnome och kontrollerade sedan igen
vim --version | grep clipboard +clipboard +insert_expand +path_extra +user_commands +emacs_tags +mouseshape +startuptime +xterm_clipboard
Nu kan jag kopiera och klistra in med ”+ y respektive” + p.
Svar
Tänk, Jag hittade svaret – det står skrivet i vims menyer.
"+y
Mycket intuitivt.
Kommentarer
- Använder du
gvim
? - @ nozimica- ja
- Att ’ finns också i vim som körs i en xterm eller liknande terminalemulator under X (om vim har kompilerats med
+xterm_clipboard
-funktionen).
Svar
Bara för att lägga till ett icke-vim-specifikt svar: Du kan använda Ctrl+Shift+C
för att kopiera till system Urklipp i Ubuntu (om funktionaliteten tillhandahålls av din terminalemulator, gnome-terminal för en tillhandahåller den). Ctrl+Shift+V
klistras in i ett annat terminalfönster, vanligt Ctrl+V
klistras in i en GUI-app.
Dessutom, om du väljer text i terminalen och sedan mittklicka, den klistras in från X11-urklipp.
Kommentarer
- Av någon anledning fungerar det inte ’ t fungerar. Välj bara med visuellt läge, kopiera med ctrl-shift-C och klistra sedan in i en annan app med Ctrl-shift-V? Texten ’ kopieras inte för mig.
- @ ripper234: det här fungerar inte om du använder gvim. Som crazy2be sa, den här funktionen kommer från din terminalemulator.
- @ ripper234: 1) Det är funktionalitet som tillhandahålls av din terminalemulator (gnome-terminal för en tillhandahåller den), 2) Ctrl + Shift + V är för att klistra in till terminalen använder GUI-appar fortfarande Ctrl + V som vanligt. Jag ’ Redigerar svaret för att göra det tydligare.
- om du använder shift-control mousedrag – välj text, kopiera klistra in från ett buffertfönster blir lätt.
Svar
Håll ned SKIFT-tangenten och markera text för att kopiera den.
Klistra sedan in i ett annat program med CTRL + v
.
Fungerar i terminal på min Ubuntu 16.04. Inte säker på gvim
och andra system.
Kommentarer
- Det fungerar inte.
- kreativt svar
Svar
Som standard, om du installerar den lätta versionen av vim, har du inte +xterm_clipboard
-funktion på (vim --version | grep xterm
), som behövs för att använda *
och +
register utanför vim.
För att aktivera det måste du antingen kompilera vim själv eller installera en version av vim som medföljer den föraktiverad. Jag använde vim-gnome: sudo apt-get install vim-gnome
. Om du utför vim --version | grep xterm
ser du att det nu är +xterm_clipboard
.
Försök nu kopiera till +
och *
och det ska fungera.
Svar
Bara för att lägga till, om något fungerar, försök att byta terminal som omsluter vim (om du använder vim från terminalen). Jag tyckte att till exempel urklipp är oåtkomligt med guake medan det är tillgängligt från gnome-terminal.
Svar
För Ubuntu 14.04 Och ovan:
-
Välj bara texten som du vill kopiera. Klicka sedan på mittknappen med musen och gå till Urklipp
-
Och gör detsamma där också (klicka på mittknappen med musen).
Det fungerar 100% i båda vim
och tail
på Ubuntu.
shift'
och sedanshift=
och sedany
(inte alla på en gång, en efter den andra, förutom förskjutningarna förstås).