Van-e mód a szövegblokk átmásolására a rendszer vágólapjára, így beilleszthetem egy másik programba?

Megjegyzések

  • Ezt már megkérdezték és megválaszolták a SO-n. További és eltérő információkat találhat ott.
  • Ezt a bővítményt a macvim christoomey / vim-system-copy alkalmazásban használtam, és nagyon szeretem. Nagyon jól működik cpip, cpi{ mozgásokkal.
  • Amire valóban szükséged van, az EasyClip . Pontosan ezt és még sok minden mást fog tenni.
  • Nem választ, hanem megjegyzést fűzök hozzá. Ha csak szöveget szeretne másolni, használhatja az sed 🙂 parancsot is. sed -n 5p file; csak az 5. vonal. sed -n -e 5p -e 8p file; csak az 5. és a 6. sor. sed -n 5,8p file; 5. és 8. közötti vonalak. Ez kinyomtatja a vonalakat a konzolon. Könnyedén másolhat a szöveg kiválasztásával.

Válasz

A következőhöz: X11 alapú rendszerek (azaz Linux és a legtöbb egyéb UNIX -szerű rendszerek) két vágólap van, amelyek függetlenek egymástól:

  • ELSŐDLEGES – Ez a másolás a kiválasztáskor lehetőség, és a középső egérgombbal beilleszthető.
  • CLIPBOARD – Ezt másoljuk (általában) ^C és beillesztjük ^V -vel (ez olyan, mint az MS Windows).

OS X és A Windows rendszereknek csak egy vágólapja van.

X11 esetén rendszerek is vannak olyan eszközök, amelyek szinkronizálják ezeket a vágólapokat az Ön számára; így ha azonosnak tűnnek, akkor futhat az egyik.

A Vim két speciális regissel rendelkezik ezeknek a vágólapoknak megfelelő terek:

  • * a PRIMARY-t használja; emlékeztető: S tar is S megválasztott (másolásra s választott esetén)
  • + a CLIPBOARD eszközt használja; emlékeztető: CTRL PLUS C (a közös billentyűzethez)

Windows & OS X nincs különbség + és * között, mivel ezeknek a rendszereknek csak egyetlen van vágólapra, és mindkét regiszter ugyanarra utal (mindegy, hogy melyiket használja).

Ezeket a regisztereket bármilyen regiszterként használhatja. Például a PRIMARY vágólap használatával * a y és p parancsokkal:

  • "*yy
  • "*p

Lehet, hogy ezt kényelmesebb billentyűzárként használja:

noremap <Leader>y "*y noremap <Leader>p "*p noremap <Leader>Y "+y noremap <Leader>P "+p 

Ha ” automatikusan ” interfészt szeretne a rendszerrel “s a vágólap ahelyett, hogy állandóan manuálisan hivatkozna rá, beállíthatja a clipboard változót:

  • Állítsa unnamed értékre az * használatához (ELSŐDLEGES, a kiválasztottnál)
  • Állítsa unnamedplus a + (VÁGÓTábla, ^C)

használatához Most már csak a yy használatával a rendszer vágólapjára kerül a Vim névtelen regisztrációja helyett, és a p beilleszti a rendszert “s vágólap.

Ezekhez a regiszterekhez is hozzárendelhet, mint bármelyik regisztrációhoz a let címmel:

  • :let @+=42
  • :let @*=42

A clipboard a beállításnak van még néhány lehetősége (például a szűrők kizárása); de ezek az alapok. A teljes történetet lásd: :help "clipboard" 😉

gVim

Ha használja a gVim-et, akkor a másolással történő kijelölés viselkedését tapasztalhatja, amikor :set guioptions+=a használatával.
Ez alapértelmezés szerint engedélyezve van az X11 rendszereken (az ELSŐDLEGESRE másol), az MS Windows rendszeren azonban nem & OSX (mivel bármely szöveg kiválasztása felülírná a vágólapot).

Nincs +clipboard?

A Vim használatához a +clipboard szolgáltatásjelző, hogy ezek bármelyike működjön; a Vim-en belüli :echo has("clipboard") használatával ellenőrizheti, hogy a Vim rendelkezik-e ezzel (ha a kimenet 0, akkor nem jelen van, ha “s 1, akkor az), vagy ellenőrzi a vim --version kimenetét a .

A legtöbb Linux disztribúció ” minimális ” Vim felépítéssel szállítja alapértelmezés szerint, amelynek nincs “div id = “237c3b368a”>

, de általában telepítheti:

  • Debian & Ubuntu: Telepítse vim-gtk3.
  • Fedora: telepítse a vim-X11 alkalmazást, és futtassa a vimx parancsot a vim ( további információ ).
  • Arch Linux: install gvim (ez engedélyezi a +clipboard funkciót a normál vim számára is.

használja a xclip, xcopy vagy a xsel szöveget a vágólapra másol; lásd a következőket kérdések a megoldásokra:

SSH

Vágólapot is használhat távoli gépeken, ha engedélyezi az X11 továbbítást SSH-n keresztül. Ez különösen hasznos a fenti tippnél, mivel ezután a xclip használatával elérheti az asztal vágólapját. A gép Vim-jének továbbra is szüksége lesz a +clipboard szolgáltatás.

Ehhez a ForwardX11Trusted beállításra van szükség, és csak megbízható kiszolgálókkal végezhető el , mivel ez a szervernek szinte teljes ellenőrzést biztosít az X11 munkamenet felett:

$ ssh -XY myhost 

Annak érdekében, hogy ezek a beállítások tartósak legyenek (tehát nem kell minden alkalommal hozzáadnia a -XY elemet), ilyet tehet a ~/.ssh/config:

# Do **NOT** set this globally; it gives the server complete control over # your X11 session. Host myhost ForwardX11 yes ForwardX11Trusted yes 

Neovim

A Neovim megújította a vágólap támogatását. A beépített kezelőfelületet eltávolították és lecserélték egy hívó rendszerre külső segédprogram, például xclip, xsel vagy pbcopy / pbpaste.

Automatizálnia kell atikusan vegye fel és használja fel ezeket a segédprogramokat. OS X rendszeren pbcopy és pbpaste alapértelmezés szerint elérhetőnek kell lennie, Linux rendszeren valószínűleg telepíteni kell a xclip, mivel ez a legszélesebb körben elérhető (a xsel valójában két verziója van inkompatibilis zászlókkal . Ez nagyon hülye).

Lásd még: :help clipboard a Neovimban.

Megjegyzések

  • ssh -Y azt jelenti, hogy -X így -X elhagyható.
  • Nagyon érdekes mellékhatása ennek a tanulásnak (néhány év számomra az a felismerés volt, hogy " sok elnevezett regisztert választhat ki. "+ nem varázslat, ez ‘ s csak regisztrálja a + -t. Például, ha három dolgot akar egyszerre másolni, és mindegyiket egyesével beilleszteni, akkor "1y, "2y és "3y és l ater "1p, "2p és "3p. Ez valóban hatékony és szinte más szerkesztőben nem létezik. Egy másik érdekes felhasználás a tárolt makrók megtekintése. Például, ha a qq címmel rögzít, de rájön, hogy meg kell javítania, akkor a következőket teheti: egy temp sorban "qp meg, és "qd.
  • Csak egy megjegyzés: Az OS X-nek két külön vágólapja van. Az egyikhez a Cmd-C és a Cmd-V, a másikhoz az emacs Ctrl-K és Ctrl-Y billentyűkapcsolókat használhatjuk.
  • @shahbaz – valószínűleg jobb, ha a levélregisztereket ilyen célra használjuk, mivel a számozottak megváltoznak, amikor a szöveget törlik.
  • A & beillesztés a kérdésben leírt módon az asztali számítógépekre vonatkozik. Igaz, hogy a gvim csomag telepítése az vim mellé vágólap funkciókat biztosít. de a fájlböngészőkben ezután két szövegszerkesztőt ajánlanak fel fájlok megnyitására! És ez csúnyán néz ki. Ezért jobb, ha csak az vim és az vim-gui-common csomagokat telepíti. Később az egyik biztosítja a vágólap funkcióit a gvim telepítése nélkül. Ez a Linux Debian 10-en van.

Válasz

Feladó: http://vim.wikia.com/wiki/Accessing_the_system_clipboard

set clipboard=unnamedplus 

Ez megváltoztatja az alapértelmezett Vim regisztert a + regisztráció, amely a rendszer vágólapjára van kapcsolva.A :h clipboard-unnamedplus felől:

 clipboard-unnamedplus unnamedplus A variant of the "unnamed" flag which uses the clipboard register "+" (quoteplus) instead of register "*" for all yank, delete, change and put operations which would normally go to the unnamed register. When "unnamed" is also included to the option, yank operations (but not delete, change or put) will additionally copy the text into register "*". Only available with the +X11 feature. Availability can be checked with: if has("unnamedplus") 

Megjegyzések

  • Miért nem működik ez nekem, amikor a yim & beillesztés a vim példányok közé (mindegyik külön terminátor terminálban)?
  • Ha Linux operációs rendszert használ, és a Vim-et a + X11 szolgáltatással fordították le, és a vágólap = unnamedplus be van állítva, akkor képesnek kell lennie arra, hogy kiragadjon egy sort a VIM egyik példányában, és beillessze egy másik példányba a vim. Be kell tudnia illeszteni bármely más alkalmazásba a CTRL + V vagy a SHIFT + INSERT gombbal. Használhatja az :version funkciót a Vim-en belül, hogy lássa, megjelenik-e a + X11 a mellékelt szolgáltatások listájában. Azt is ellenőrizheti, hogy a ‘ unnamedplus ‘ szolgáltatás elérhető-e a :if has('unnamedplus')⏎ echo 'yes'⏎ endif szolgáltatással. nem Linuxon, akkor névtelenül kell használni a név nélküli plusz helyett.

Válasz

A többi válasz a másolás módjára vonatkozik. szöveget a pufferből a rendszer vágólapjára. Egy másik gyakori művelet a szöveg másolása egy másik regisztrációból a vágólapra. Például, ha már rángatott egy kis szöveget az " (alapértelmezett regisztráció) helyre, akkor érdemes betölteni ezt a regisztrációt a vágólapra.

tegye ezt a következővel: :let:

  • let @+=@" — átmásolja az alapértelmezett regisztert a vágólapra
  • let @*=@" — az alapértelmezett regisztert átmásolja az X11 elsődleges kiválasztásába (“egér vágólap “)
  • let @+=@a — másolás a a nyilvántartásból a vágólap
  • stb.

Ne feledje, hogy ez általában a regisztereknél működik: let @a=@b másolja a regisztrációt b a a regisztrálásához.

Válasz

Be az ezt támogató buildek, a * nevű regiszter a rendszer vágólapja. Ha szöveget szeretne másolni a Vim-ből a rendszer vágólapjára, akkor válassza ki a szöveget vizuális módban, majd nyomja meg a "* y gombot a rendszer vágólapjára történő másoláshoz.

Ezzel szemben, a "* p paranccsal beillesztheti a szöveget a rendszer vágólapjáról a Vim-be.

Válasz

Ha nem tudja kitalálni, hogyan lehet +clipboard dolgozni, amit valamilyen oknál fogva nem tudtam megtenni, akkor megteheti ezt.

Feltételezve, hogy csak a fájl egy részét akarja lemásolni, shift + v megyek vizuális módba, és csak azokat a vonalakat emelje ki, amelyeket másolni akarok. Akkor ezt megteszem.

# Linux Wayland :"<,">w !wl-copy # Linux Xorg :"<,">w !xclip -selection clipboard 

Magyarázat

  • "<,"> – téged jelent a vizuális mód segítségével választott egy tartományt (ezt nem írja be)
  • w !{cmd} – írja be a tartományt a cmd, lásd még: :help w_c
  • wl-copy és xclip olyan programok, amelyekhez szöveget tudsz küldeni, és hozzáadják a rendszer vágólapjához.

Ezenkívül, ha ez már szerepel az előzményeidben, nem kell beírnod az egészet még egyszer. Csak válasszon a vizuális móddal, írja be a w parancsot, majd nyomja meg a fel gombot, és a parancsnak automatikusan ki kell töltenie. Ezenkívül nem kell vizuális módot is használnia. Bármelyik tartományt beállíthatja.

Megjegyzések

  • Ennek felértékelése (a másik hasonló válasz fölött), mert ez magyarázatot ad. Egyébként megjegyzés magamnak vagy más olvasóknak: a xclip használatakor NEM kell hozzáadnia azt a -selection clipboard paramétert, amely túl loooong a gépeléshez. Az alapértelmezett :'<,'>w !xclip a tartalmat az ” elsődleges ” fájlba másolja, válassza a vágólapot, amelyet be lehet illeszteni az egér középső gombjával.

Válasz

Javaslom a Gvim használatát, és adja hozzá ezt a .vimrc fájlba:

source $VIMRUNTIME/mswin.vim behave mswin 

Ez lehetővé teszi a Ctrl C , Ctrl X , Ctrl V mint a Windows jegyzettömbje.

Ne feledje, hogy ez hozzáad néhány más gyakori Windows parancsikont is, például Ctrl S a :w, Ctrl A az összes kijelöléséhez stb.

Válasz

Én küzdöttem a rendszer vágólapját és vim tmux belül.

A xsel vagy xclip, mint ebben a példában:

1.) visu szövetséges válasszon ki egy blokk szöveget normál módban: V<motionkey>

2.a) xsel ex: :"<,">w !xsel -b

2.b) xclip futtatásával ex: :"<,">w !xclip -selection clipboard

3.) illessze be egy másik programba

… és most ezt válassza nmp-ként.

Ezek az opciók (-b vagy -selection clipboard) alapvetően azt jelentik, hogy a programot (xsel vagy xclip) háttérbe küldik, és várják, amíg egy másik program illessze be a tartalmat, hogy az “beavatkozhasson”.

(az i3, xfce4-terminál, tmux manjarón)

Válasz

Ez a viselkedés Azt akartam, amikor a rendszer vágólapjára került sor:

  • Egy vonal megrángatása újsoros művekkel
  • Egy vonal rángatása újsoros működés nélkül
  • a vizuális megrángatás kiválasztott művek
  • Művek vágása
  • Vonal vágása újsoros művekkel
  • Vonal vágása újsoros művek nélkül

Művek szerint Úgy értem: “Még mindig használhatom a p -t a beillesztéshez a vim-ben, és használhatom a rendszer vágólapját is. Alapvetően azt akarom, hogy a másolás és beillesztés a várakozásoknak megfelelően működjön, és nem sikerült” nem akarom a szükségesnél jobban összezavarni a rendszerem vágólapját.

A technikám az volt, hogy a rendszeres vágólap használatához feltérképeztem a közönséges rángatózó, kivágási és törlési parancsokat úgy, hogy ezeket a sorokat hozzáadtam a :

" use system clipboard " https://anuragpeshne.github.io/essays/vim/7.html noremap y "*y noremap yy "*yy noremap Y "*y$ noremap x "*x noremap dd "*dd noremap D "*D 

A legfontosabb betekintés a https://anuragpeshne.github.io/essays/vim/7.html blogbejegyzés:

A rekurzív leképezés gonosz, mindig használjon nem rekurzív leképezést. (noremap)

Megjegyzések

  • Mit jelent a " csinálni? Az első válasz már elmagyarázta, mire való a *, (utalva az elsődleges vágólapra), de nem látok semmiféle magyarázatot ‘ mire való a ", és ez miért működteti a parancsot.
  • Ez ‘ nem azonnal nyilvánvaló, mert Ön ‘ valószínűleg megszokta, hogy az idézetet szavak megkerülésére használják, például "foo"; azonban a vim esetében "* valójában a ” regiszter neve ” (a vim koncepció), amely csatlakozik a rendszer vágólapjához. Ha megnyitja a vim parancsot, és beírja a következőt: :registers, akkor láthatja más regiszterek nevét is, például: / div>, "1 és tovább. Hasznosnak találtam ezt a cikket a regiszterek megismeréséhez: brianstorti.com/vim-registers

Válasz

Ha a vim nem támogatja a +clipboard -t, használhatja a fakeclip plugin Linux, Mac, Windows, tmux, screen, …

Válasz

Minden más válasz lefedett minden fontos dolog a nyilvántartásokkal kapcsolatban. Szeretnék még egy dolgot hozzáfűzni, amelyet használok.

A Vimben van egy mód, amellyel közvetlenül másolhatja a vizuálisan kiválasztott szöveget a vágólapra. Csak tegye ezt a vimrc fájljába:

set guioptions+=a 

És ezzel, amikor vizuálisan kiválaszt egy szöveget, az átmásolásra kerül vágólap. További információ: :help guioptions

BTW, ez csak a gVim-re vonatkozik.

Megjegyzések

  • guioptions+=a is szerepel a Carpetsmoker ‘ válaszában.
  • @muru Igen, sajnálom . Ezt korábban nem láttam ‘. Éppen láttam.

Válasz

Globális paranccsal is használhat bizonyos mintát a vágólap. Hasznos lehet olyan helyzetekben, amikor az információk szétszóródnak egy fájlban, és a kézi másolás hajlamos a hibákra és fárasztó.

Először tisztítsa meg az információt fogadó regisztert

:let @a="" 

Ezután másolja bele a mintát tartalmazó összes sort

:g/pattern/yank A 

Végül az információ átvitele (másolása) a rendszer vágólapjára

:let @+=@a 

ha megpróbálsz minden “mintát” tartalmazó sort közvetlenül a vágólapra másolni, mert nem fog működni, mert a vágólap nem képes új fájlok hozzáfűzésére tartalmat, ezért itt egy normál vim regisztert használunk a mintát tartalmazó összes sor egyszerre történő tárolásához, majd a vágólapra helyezéséhez.

OBS: A regisztráció használata előtt szükséges a regisztráció és a a regisztráció UPPERCASE verziójának használata lehetővé teszi számunkra a tartalom hozzáfűzését, különben ez sem fog működni.

Válasz

MacVim Cmd + x/c/v kivágás / másolás / beillesztés

Ha MacVim-et használ, a szokásos Cmd+x/c/v a $ VIMRUNTIME / macmap.vim , amely alapértelmezés szerint származik, és ezért konfiguráció nélkül érhető el:

vnoremap <special> <D-x> "+x vnoremap <special> <D-c> "+y cnoremap <special> <D-c> <C-Y> nnoremap <special> <D-v> "+gP cnoremap <special> <D-v> <C-R>+ execute "vnoremap <script> <special> <D-v>" paste#paste_cmd["v"] execute "inoremap <script> <special> <D-v>" paste#paste_cmd["i"] 

Ezek használata azonban olyan vim felhasználóhoz vezethet, aki nem ismeri a vim módon és elvesznek egy idegen számítógépen / környezetben.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük