¿Cómo copiar al portapapeles en Vim?

753

¿Es posible copiar al portapapeles directamente desde Vim? yysolo copia cosas al búfer interno de Vim. Quiero copiar al portapapeles del sistema operativo. ¿Existe tal comando en Vim o solo puedes tirar cosas dentro de Vim?

Hari Menon
fuente
140
Por favor, vea la respuesta subestimada que aclara un hecho importante: ¡debe haber compilado vim con la función + del portapapeles para que CUALQUIERA de las sugerencias siguientes funcione en primer lugar! Este NO es el predeterminado en la mayoría de los sistemas.
Neil Traft
77
@NeilTraft, algunas respuestas sugieren canalizar desde vim a programas externos, por lo que la afirmación de que CUALQUIER respuesta requiere + bandera del portapapeles, es incorrecta. Solo señalando para salvar a los futuros lectores de la confusión.
Hnatt
2
Posible duplicado de Cómo hacer que vim pegue desde (y copie) al portapapeles del sistema? (Nota: la otra pregunta es más nueva, pero tiene mejores respuestas en mi humilde opinión, por lo que
marqué
55
¡Asegúrese de haberlo hecho sudo apt-get install vim-gnome antes de aplicar estos comandos a continuación o obtendrá un error de registro no válido!
Harnirvair Singh
77
@Harnirvair Para muchos conjuntos de lectores aquí, vim-gnomees probable que sea excesivo o simplemente no esté disponible en su sistema operativo / distribución, mientras que sospecho vim-gtky vim-gtk3es más probable que exista y obtenga menos dependencias, al tiempo que proporciona la integración del portapapeles (al menos para aquellos que todavía están en X11; No estoy seguro de cómo todo esto interactúa con Wayland).
underscore_d

Respuestas:

497

El *registro hará esto. En Windows, +y *son equivalentes. En unix hay una sutil diferencia entre +y *:

En Windows, los registros * y + son equivalentes. Para los sistemas X11, sin embargo, difieren. Para los sistemas X11, * es la selección y + es el búfer de corte (como el portapapeles). http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*es probablemente lo que desea la mayor parte del tiempo, así que lo uso *porque funciona como lo espero en ambos entornos.

En las distribuciones de Linux, primero debe instalar vim-gtk(también conocido como gvim) para obtener la funcionalidad del portapapeles. Esto se debe a que vim no gtk normalmente se compila sin compatibilidad con X11. Esto es para permitir que se ejecute solo en máquinas de consola (a menudo servidores).

Y para aquellos confundidos acerca de cómo usar los registros al tirar o poner, simplemente escribes "el nombre del registro. Entonces, para copiar algo en el registro del portapapeles, escriba "*yy luego escriba "*p(crédito: Kyle Mathews)

Gabe Moothart
fuente
31
No funciona en mac osx lion. Después de presionar "a continuación *, que hace que el ruido del mac hace cuando no se puede hacer algo ¿Cómo lo hago en Mac.?
Eddy
62
También debe asegurarse de que vim se compila con soporte para el portapapeles. El vim predeterminado en Ubuntu no lo es. Intenta vim --version|grep .xterm_clipboard -oy si es -así no tienes soporte. Descargue una versión diferente según ubuntuforums.org/showthread.php?t=1686955
Sparhawk
66
Si está utilizando Linux, debe +registrarse. Por ejemplo, si desea copiar tres líneas en el portapapeles del sistema, use comandos como v3j"+y, y luego puede pegarlas en otra aplicación más en otro VIM. El uso de *registrarse en Linux solo puede copiar y pegar entre diferentes aplicaciones VIM.
diabloneo
66
En Linux, el registro * no funciona para copiar y pegar externamente.
weberc2
11
weberc2 y diabloneo, el registro * es para el portapapeles de selección, accesible desde el botón central, no desde el menú pegar o ^ V
Jim Keener
354

En Mac OSX

  • copiar parte seleccionada: seleccionar visualmente el texto (escribir vo Ven modo normal) y escribir:w !pbcopy

  • copia todo el archivo :%w !pbcopy

  • pegar desde el portapapeles :r !pbpaste

En la mayoría de las distribuciones de Linux , puede sustituir:

  • pbcopyarriba con xclip -i -sel coxsel -i -b
  • pbpasteusando xclip -o -sel -co xsel -o -b
    - Nota: en caso de que ninguna de estas herramientas ( xsely xclip) estén preinstaladas en su distribución, probablemente pueda encontrarlas en los repositorios
Brian
fuente
1
+1 funciona con Lion, aunque vim --versionmuestra-clipboard
roplacebo
26
compatible con vim que se envía con mavericks osx. agregar a su .vimrc vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>Para usar esta asignación, si desea copiar, resalte el texto en modo visual y presione Ctrl-c para copiar. Para pegar desde el portapapeles del sistema, presione Ctrl-v.
davidtingsu
77
En Linux, esto funciona con: w! Xclip -sel c o: w! Xsel -b
trve.fa7ad
44
Para Linux Ctrl + C copia: en ~ / .vimrc agregue:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy
3
Una respuesta mucho más útil que la aceptada. ¡Gracias!
Bryce Johnson
165

En su archivo vimrc puede especificar que use automáticamente el portapapeles del sistema para copiar y pegar.

En el conjunto de Windows:

set clipboard=unnamed

En el conjunto de Linux (vim 7.3.74+):

set clipboard=unnamedplus

NOTA: Es posible que necesite usar una versión actualizada de Vim para que estos funcionen.

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

Gary Willoughby
fuente
39
Como una adición a su nota, es posible que también deba instalar paquetes adicionales para que esto funcione. Si tu vim carece de la +xterm_clipboardfunción (visible cuando corres vim --version). Este fue el caso para mí (ejecutando Kubuntu 12.10). Tuve que instalar el vim-gui-commonpaquete para obtener la funcionalidad correcta.
Jacob Dalton
44
set clipboard=unnamedfunciona en Mac OS 10.11.6 (El Capitan) con vim 7.4
Purplejacket
1. Copiar al arrastrar 2. selección del mouse, funciona en Mac Sierra-10.12.6 y vim-version: 8.0.1800 especificando los siguientes comandos en el archivo ~ / .vimrc set mouse=vyset clipboard=unnamed
dkb
set clipboard=unnamedfunciona en MacOS Catalina
Diego Somar
Es posible que desee actualizar su respuesta. No funciona en Ubuntu 18.04 con vim 8.0.
Luís de Sousa
124

Utilice el registro "+para copiar en el portapapeles del sistema (es decir, en "+ylugar de y).

Del mismo modo, puede pegar "+para obtener texto del portapapeles del sistema (es decir, en "+plugar de p).

Amardeep AC9MF
fuente
Uso "*, pero parece que solo hay una diferencia en X.
dash-tom-bang
3
@ dash-tom-bang: la diferencia +/ *es SELECTIONfrente a los PRIMARYbúferes de copia (no recuerdo cuál es qué
cajero automático
2
Sí, la estrella es la selección, más el portapapeles.
dash-tom-bang
66
El carácter de comillas dobles sirve como selector de registro en vi y vim.
Amardeep AC9MF
1
Dos conjuntos de atajos para recordar: "+yy(copiar línea al portapapeles) y "+yy(copiar línea a la selección); "+p(pegar desde el portapapeles) y "*p(pegar desde la selección). "es seleccionar el registro que es el registro interno propio de vim por defecto (la forma yyy pfuncionaría sin hacer referencia a ningún tipo de registro). PD: Me pregunto si hay un personaje para el propio registro interno de Vim, algo así como lo "&yyque se vuelve yypor defecto.
72

@Jacob Dalton ha mencionado esto en un comentario, pero nadie parece haber mencionado en una respuesta que vim tiene que ser compilado con soporte de portapapeles para que cualquiera de las sugerencias mencionadas aquí funcione. El mío no estaba configurado de esa manera en Mac OS X por defecto y tuve que reconstruir vim. Use este comando para averiguar si lo tiene o no vim --version | grep 'clipboard'. +clipboardsignifica que eres bueno y las sugerencias aquí funcionarán para ti, mientras que -clipboarddebes recompilar y reconstruir vim.

gkb0986
fuente
15
O, en lugar de compilarse, puede instalar un paquete vim que ya se ha creado con soporte para portapapeles. En OS X, Homebrew tiene esta: brew install vim. En Ubuntu, puedes usar sudo apt-get install vim-gnome. En otras distribuciones de Linux (que no sean GNOME) puede instalar vim-gtko vim-athena.
Neil Traft
3
Gracias, en Arch Linux tuve que eliminar vime instalar gvim wiki.archlinux.org/index.php/Vim#Installation
michalzuber
Sus respuestas explican por qué el yank no funciona con el portapapeles, solo con su información podría hacer una mejor búsqueda en Google y hacer que funcione fácilmente. Y ahora está funcionando. Sería mejor si también incluye el comentario de @NeilTraft a su respuesta para que las personas no necesiten hacer búsquedas en Google.
Yana Agun Siswanto
En Mac, justo después de brew install vimagregar set clipboard=unnameda .vimrc. Ejecutar source ~/.vimrcen línea de comando. En .bash_profile agregué y alias vim="/usr/local/bin/vim"luego ejecuté source ~/.bash_profile. Ahora en vim solo use yy ppara copiar / pegar
Dmitry
59

Resumiendo y haciéndolo más fácil para los novatos,

Para copiar la línea actual, en modo comando escriba:

"*yy

Para copiar todo el archivo / búfer, en modo comando, primero vaya al principio a través de gg, luego escriba

"*yG

Como se señaló, esto requiere +clipboardfuera vim --version, lo que indica la disponibilidad de soporte del portapapeles, -clipboardsignifica que no.

ryenus
fuente
1
"*5yydice 5 lines yankedpero nada en el portapapeles? os / x.
javadba
2
Sí, había verificado + portapapeles
javadba
nnoremap <leader>c "* en .vimrcfunciona bastante bien como una "copia" de clases, seguido de un movimiento para agarrar el objeto de texto que desea copiar en el portapapeles del sistema operativo.
cpk
Gracias, lo explicaste exactamente como lo necesitaba.
Symen Timmermans
3
He instalado vim-gtka su vez -clipboarden +clipboard, que "+yyestá trabajando.
Lai32290
30

Si está utilizando vim en MAC OSX, desafortunadamente viene con una versión anterior y no cumple con las opciones del portapapeles. Afortunadamente, homebrew puede resolver fácilmente este problema.

instalar vim:

brew install vim

instalar gui verion de vim:

brew install macvim

reinicie el terminal para que surta efecto.


agregue la siguiente línea a ~ / .vimrc
set clipboard=unnamed

ahora puede copiar la línea en vim con yyy pegarla en todo el sistema.



Método actualizado :

Nunca estuve satisfecho con el método del portapapeles establecido durante años. El mayor inconveniente es que arruinará el historial del portapapeles, incluso cuando lo use xpara eliminarlo. Aquí hay una solución mejor y más elegante.

  1. Copie el texto [rango] de vim en el portapapeles del sistema. (Sugerencia: use vo Vpara seleccionar el rango primero y luego escriba los dos puntos :para activar el comando Ex):
    :[line-range]yank +
    por ejemplo,
    :5,10y * (copie / tire de las líneas 5-10 al *registro del portapapeles del sistema )

  2. Pegue el contenido del portapapeles del sistema en vim en una nueva línea:
    :put +

Nota:

  1. Si selecciona un rango de palabras, lo anterior no funcionará. use "* y o " + y para guardar este bloque visual en el portapapeles. Sin embargo, esto es difícil de escribir, todavía estoy pensando en alternativas.
  2. : ayuda "* o : ayuda * + para más información
  3. brew info vimpodrá ver otras opciones para instalar vim. Actualmente no tiene otras opciones.
anónimo
fuente
--with-override-system-vimdebería ser--with-override-system-vi
maffo
Me gustaría probar esto para evitar instalar muchas cosas de Xorg en sistemas mínimos, pero me falta algo. Obtengo "No es un comando de editor [rango] yank +" después de seleccionar en modo v y luego presionar ":".
jeremyjjbrown
29

Para Ubuntu: julio de 2018

Utilice el registro "+ para copiar en el portapapeles del sistema (es decir, " + y en lugar de y ).

Del mismo modo, puede pegar desde "+ para obtener texto del portapapeles del sistema (es decir, " + p en lugar de p ).

También debe asegurarse de que vim se compila con soporte para el portapapeles. Tratar:

vim --version | grep .xterm_clipboard -o 

y si es -xterm_clipboard (un prefijo menos), entonces no tiene soporte.

Aquí hay algunas instrucciones para intercambiar con una versión funcional de vim que tenga soporte para portapapeles.

  • $ sudo apt-get purge vim
  • $ sudo apt-get autoremove (elimina los paquetes de dependencia vim extraños del sistema)
  • $ sudo apt-get install vim-gnome

Verifique nuevamente con vim --version | grep .xterm_clipboard -oy puede confirmar que el portapapeles ahora está disponible (es decir. + Xterm_clipboard )

Buena suerte.

arcseldon
fuente
3
Me alegraste el día, o tal vez mi mes. Después de trabajar con vim sin portapapeles en Ubuntu durante años, esta es una sensación increíble. arcseldon, gracias !!
evanrmurphy
Además de lo que se describió anteriormente, tuve que poner set clipboard=unnamedplusmi .vimrcarchivo para que el tirón funcione. Estoy usando Ubuntu 18.04.
Elijah
23

No pude copiar al sistema de mi portapapeles porque tenía esto en mi archivo ~ / .vimrc:

 if has('mouse')
   set mouse=a
 endif

Pero si agrega esta línea a continuación, le permitirá simplemente Ctrl+c para obtener lo que haya seleccionado en su portapapeles.

vmap <C-c> "+y

Discusión original y más detalles: copie el texto de vim con set mouse = a habilitado

jcarballo
fuente
3
No agregué la línea a mi .vimrc, pero el enlace que proporcionó fue muy útil. Si mantiene presionada la tecla MAYÚS mientras selecciona texto en vim, puede copiar texto sin ingresar al modo visual. Así que gracias y +1.
Stefan van den Akker
Shift trick es lo que necesitaba. Funciona tan bien con editores como terminator que usan Ctrl + Shift + c para copiar mientras está en el indicador, que es lo que intenté al principio. Tenía -xterm_clipboard instalado con vim.
Anders Elmgren
18

la solución para mí fue instalar vim adicional que incluye la opción de portapapeles: 

sudo apt-get install vim-gnome
alex
fuente
3
Esto es lo que tuve que hacer para Ubuntu 16.04. Probé las otras sugerencias sin éxito. Esto fue lo más fácil e hice lo que esperaba con "+ y.
Steven Eckhoff
¡Funciona de maravilla sin ningún cambio de vimrc! sigue siendo válido en Ubuntu 16.04
makerj
La "+ysugerencia solo funcionó vim-gnome. Usando Linux Mint 18.2.
Samaursa
14

Si está utilizando GVim, también puede hacerlo set guioptions+=a. Esto activará la copia automática al portapapeles del texto que resalte en modo visual.
Inconveniente: Tenga en cuenta que los administradores de portapapeles avanzados (con historial) en este caso obtendrán todo su historial de selección ...

Benoit
fuente
13

Puedes encontrar las respuestas aquí Arch Wiki

Para Linux: en primer lugar, debe habilitar el Portapapeles en su versión vim mediante la instalación gvim.


A continuación, debe poner esta línea en su .vimrcarchivo.

set clipboard=unnamedplus

HOuadhour
fuente
+1, me sorprendió que ahora se requiera este paso. En toda mi instalación anterior de Arch no tuve que hacerlo.
Konstantinos
También funcionó para Ubuntu 18.04 y se ejecuta en tmux. ¡Gracias!
James Klein el
10

Si su vim se compila sin una +xterm_clipboardopción como la que está por defecto en Debian y supongo que Ubuntu, puede canalizar la selección o el búfer completo al programa externo que maneja el portapapeles del escritorio. Para xclip(que puede necesitar instalar previamente), el comando será:w !xclip -sel clip

Hnatt
fuente
1
Gracias por esto, no me ha funcionado en Ubuntu (por lo que confirmar su suposición de Ubuntu es correcto) durante años y no sabía por qué. Ahora puedo ver -xterm_clipboarden las banderas que se muestran cuando yo vim --version.
jamesc
Esto me ayudó a encontrar una buena fuente de soporte para el portapapeles: vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support
jamesc
9

En vim solo bajo la terminal de ubuntu,

presione shift + drag mousepara seleccionar un texto en vim y luego ctrl + shift + cen el terminal

luego ctrl + ven otro editor

Supawat Pusavanno
fuente
3
Esto funciona para seleccionar solo lo que es visual en vim, ¿qué sucede si desea seleccionar todo el archivo?
Gerep
@Gerep este método no funciona para la selección de archivos completos. es bueno seleccionar una sección de texto solo en el terminal vim y donde se muestra el texto en la pantalla del terminal.
Supawat Pusavanno
1
Esto copia los números de línea, los bordes del búfer de las divisiones y todo lo que está visible, en lugar de solo el texto / código.
Zelphir Kaltstahl
9

Si tiene xclip, una forma fácil de copiar texto en el portapapeles es la siguiente:

  1. Texto de Yank que quieres copiar. ( ycomando en vainilla vim)
  2. Escribir :call system("xclip -selection clipboard", @")

:call system()ejecuta un comando de terminal. Se necesitan dos argumentos, el primero el comando, el segundo qué canalizar a ese comando. Por ejemplo, :echom system("head -1", "Hello\nWorld")devuelve Hello (con algo de relleno). echom devuelve la salida de un comando, la llamada no.

xclip -selection clipboard simplemente copia el texto en el portapapeles del sistema en lugar del portapapeles X predeterminado (se accede mediante el botón de medio).

@"devuelve el último texto arrancado. "es el registro predeterminado, pero puede usar cualquier registro. Para ver el contenido de todos los registros, escriba :registers.

John AZ1
fuente
2
Esto es más robusto, funciona incluso cuando vim no cumple con el soporte para el portapapeles y en cualquier sistema operativo. Por ejemplo, en Mac corre :call system("pbcopy",@"). Uno puede vincular este comando a una clave.
ilija139
funciona bien, pero ¿puedo ponerlo en mi vimrc? ¿Funcionará? No está funcionando para mí.
thenakulchawla
5

Esta respuesta es específica para usuarios de MAC.

El VIM predeterminado disponible con MAC no viene con la opción del portapapeles habilitada. Necesita esa opción para acceder al portapapeles del sistema.

Para verificar si su vim tiene esa opción habilitada, use el siguiente comando

vim --version

En el resultado, deberías haberlo hecho +clipboard. Si esto es-clipboard , su VIM NO tiene la opción de acceder al portapapeles del sistema.

Necesita HACER e instalar su VIM con la opción que necesita. Los siguientes son los comandos.

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

Lo anterior instalará el último VIM con la opción +clipboardhabilitada.

Ahora necesita configurar el portapapeles del sistema. Agregue la siguiente línea a~/.vimrc

set clipboard=unnamed

Ahora puede tirar texto al portapapeles del sistema. Los pasos a continuación explican cómo tirar.

  1. En modo de comando vim press v , esto lo cambiará al modo VISUAL.
  2. Mueva el cursor para seleccionar el texto o las líneas que necesita copiar.
  3. Press y, esto copiará el texto seleccionado al portapapeles.
  4. Ir a cualquier aplicación externa y CMD + vpegar.

Yo uso MACBook Pro con macOS Mojave y lo anterior funciona en él.

Joseph Kulandai
fuente
4

Quizás alguien lo encuentre útil. Quería mantenerme independiente del portapapeles X y aún así poder copiar y pegar texto entre dos vims en ejecución. Este pequeño código guarda el texto seleccionado en el archivo temp.txt para copiarlo. Ponga el siguiente código en su .vimrc. Use CTRL-c CTRL-v para hacer el trabajo.

vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt

noremap: r! cat ~ / temp.txt

usuario4897781
fuente
4
  1. Poner set clipboard=unnameden suvimrc .
  2. Seleccione lo que quiere copiar Visual modo (Presione v para ingresar).
  3. De regreso Normal modo (Presione escape [esc]), presione y para copiar.
  4. Si desea pegar algo del portapapeles del sistema operativo, presione p / P en Normalmodo Vim .
BigPa
fuente
4

Soy un nuevo Vim pero, para copiar todo el texto en el portapapeles del sistema (por ejemplo, si desea pegarlo en un procesador de texto u otro editor de texto como gedit, mousepad, etc.), en modo normal:

ggVGy

o, más simplemente:

:% y

Como sugerí, también instalé vim-gtk y puse

establecer portapapeles = unnamedplus

en mi .vimrc

y todo funciona bien

Si desea copiar solo una parte del texto, use el modo visual (v) , seleccione el texto que desea copiar y presione y .

Finalmente, sugiero un programa de portapapeles como Clipman (mi favorito), Clipit, Parcellite o similar.

(Estoy usando vim 8.0 en Debian Stretch Xfce)

¡PERDÓNAME POR MI INGLÉS! :-)

Bertrando Goio
fuente
3

Tuve un problema porque mi vim no era compatible con el portapapeles :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Instalé vim-gnome (que admite el portapapeles) y luego verifiqué nuevamente:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Ahora puedo copiar y pegar usando "+ y y" + p respectivamente.

Ashutosh Tripathy
fuente
3

He estado luchando con esto durante meses hasta ahora en MacOsX usando atajos de teclado. Sé que la pregunta no se trata de usar cortos de teclado. Pero esto podría ayudar a alguien con la misma preocupación.

Descubrí que si desmarca:

Ver -> Permitir informes del mouse

desde el menú Terminal, podrá copiar al portapapeles usando

command + c

de nuevo.

VAMOS'
fuente
2

Escribí una línea simple en mi .vimrc para que la copia funcione. Espero que esto ayude a alguien. Mi vim no está instalado con soporte para Portapapeles, desafortunadamente, así que ninguna de estas sugerencias me funcionó. Básicamente, pegue esta línea en su .vimrc:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

Si desea leer detalles sobre lo que hace esto, puede leer sobre esto en mi blog

Songz
fuente
1
El comprador tenga cuidado. En mac, esto tiene efectos extraños.
azatar
esto no parece copiar nada al portapapeles cuando se usa según las instrucciones (en linux ubuntu 16.04, no es compatible con el portapapeles), y si se abren varios archivos en una sesión vim, cerrará la pestaña donde se tomaron las acciones (selección visual y Cc )
calocedrus
2

Para algunos teclados internacionales, es posible que deba presionar "+ Spacepara obtener a ".

Entonces en ese caso tendrías que presionar "Space+yo"Space*y

Arthur F
fuente
2

En caso de que no desee utilizar ninguna interfaz gráfica para vim y prefiera quedarse con el emulador de terminal, puede haber un enfoque mucho más simple para este problema. En lugar de usar yank o algo así, primero eche un vistazo a la documentación del terminal que usa. He estado luchando con el mismo problema (tratando de usar + portapapeles y xclip, etc.) y al final resultó que en mi emulador de terminal es suficiente con presionar Mayús y seleccionar cualquier texto que desee copiar. Eso es. Muy simple y sin necesidad de jugar con la configuración. (Yo uso urxvt por cierto).

alagris
fuente
1

para OSX, al igual que las respuestas 10342 anteriores aclaradas, debe asegurarse de que vim sea compatible con la función del portapapeles, dijo que la que viene con OSX NO es compatible con el portapapeles, y que si ejecuta brew install vim funcionaría.

Excepto que ejecutar vi todavía te hará ejecutar la versión OSX preenviada, no la que instalaste desde brew.

para superar esto, simplemente alias mi comando vim a la versión brew, no la predeterminada de OSX:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

y ahora soy dorado

abbood
fuente
1

Mi solución fue poner la siguiente línea a .vimrc:

map <C-y> :w !xclip -sel c <CR><CR>

La secuencia de comandos copia la línea seleccionada (modo visual) o el contenido del archivo (si no se selecciona ninguno) en el portapapeles usando Ctrl + y. Estoy usando Manjaro Linux si eso importa.

Matheus Baldissara
fuente
1

Estoy en mac osx (10.15.3) y nuevo en vim. Encontré esto muy frustrante y todas las respuestas aquí demasiado complicadas y / o no se aplicaron a mi situación. Terminé haciendo que esto funcionara de 2 maneras:

  1. asignación de teclas que usa pbcopy : funciona en la versión anterior de vim que se entrega con mac.

    Agregar vmap '' :w !pbcopy<CR><CR>a su ~ / .vimrc
    Ahora puede seleccionar visualmente y presionar ''(dos apóstrofes) para copiar al portapapeles

  2. Instale la versión más reciente de vim para poder acceder a la solución más recomendada en otras respuestas:

    brew install vim
    alias vim=/usr/local/bin/vim(debería agregar esto a su ~ / .bashrc o equivalente)
    Ahora puede seleccionar visualmente y presionar "+yypara copiar al portapapeles

Dharam
fuente
Muy buena solución!
ABD
0

selectingcon la ayuda de mousey right-click copytrabajé en mi caso.

No quería que se incluyeran los números de línea, así que :set nonumberantes copying.

Akash
fuente
¿cómo puedes hacer eso en nerdTree
ji-ruh
Eso no tiene nada que ver con vim y es exclusivamente una copia basada en terminal al portapapeles (X).
Carlo Wood
No estoy seguro @ ji-ruh
Akash
0

Nada de lo anterior funcionó para mí en mi computadora portátil con Windows.

Ctrl+ Cestaba bien para copiar ... ¡pero necesitaba Shift+ Insertpegar!

(Una buena razón para obtener siempre una computadora portátil donde Insertsiempre se pueda acceder sin presionar una tecla secundaria)

SherylHohman
fuente
0

Shift+ Ctrl+ C si está en modo gráfico de Linux, pero primero debe seleccionar lo que necesita copiar.

ingrese la descripción de la imagen aquí

prosti
fuente