El vim que se envía con OSX no tiene +clipboardo +xterm-clipboard. Puedes verificar esto con vim --version | grep clipboard. Es posible resolver esto con brew install vim --with-client-server.
LondonRob
1
O utilice MacVim, que ofrece una versión de línea de comandos que puede enlazarse por enlaces simbólicos en su ~/biny luego ~/binpuede insertarse en su ruta antes del vim y los sinónimos normales instalados en el sistema.
el hombre de hojalata
Sobre la base de lo que escribió @ zx1986, hice tres cosas: 1) Agregué lo siguiente a mi ~ / .bashrc para alias vi / vim al modo terminal de MacVim: alias vi='mvim -v'2) Agregué lo siguiente a ~ / .vimrc, que asigna Ctrl + c (no Cmd + c): vnoremap <C-c> "+y3) Teclado Maestro configurado para escribir la secuencia de ^cteclas (Ctrl + C) cuando se ejecuta en el terminal (en mi caso, iTerm2) Esto permite utilizar Cmd + c para copiar texto en el portapapeles OSX para que se pueda pegar en otras aplicaciones OSX.
Neil Griffin
Respuestas:
79
Dependiendo de la versión de Vim que use, puedo usar el +registro para acceder al portapapeles.
Para las personas con VIM compilado sin + portapapeles, el enlace de arriba es un excelente recurso para dar soluciones sin recompilar VIM
sdjuan
DETALLE MUY IMPORTANTE !!! Si tiene Vim-versión 7.3, entonces esto podría no funcionar para usted, pero si tiene Vim-versión 7.4, entonces sí (y a veces ni siquiera tiene que hacer todo "+ y). Y lo verifica solo escribiendo> vim en el terminal y luego el número de versión es cuando lo inicia.
El "+registro existe solo para X11 (a menos que compile vim con soporte + X11, que instalará un servidor X11 XQuartz en OS X), mientras que OS X no usa X11 como su sistema de Windows.
nn0p
Qué hacer, si ambos - vimy macvimtienen + portapapeles. Y clipboard=unnamedañadido a ~/.vimrc? Parece un verdadero dolor, probé todas las soluciones y actualmente tengo que usar spacemacs, cuando sé que tendré que usar el portapapeles global :)
Nikolay Fominyh
240
Para MacVim y Windows Gvim, simplemente agregue lo siguiente a su ~/.vimrc:
set clipboard=unnamed
Ahora todas las operaciones tales como yy, Dy Pel trabajo con el portapapeles. No es necesario prefijarlos con "*o "+.
He pasado toda la mañana descubriendo cómo separar los comandos y, d y P de ⌘-C y ⌘-V que MacVim te permite y finalmente me di cuenta de esto. Efectivamente, había agregado esto a mi vimrc cuando era un joven vim y me ha frustrado desde entonces.
Jonathan Dumaine
2
Para aquellos nuevos en MacVim, se puede usar desde la terminal con la -vbandera ( mvim -v). Tengo el mío alias a vim y mvim.
pk-nb
3
Como lo mencionó @VincentG en su comentario anterior, esto realmente funciona con versiones de Vim basadas en terminales, pero aquellos que usan tmux dentro del terminal deberán seguir una de las soluciones detalladas aquí: stackoverflow.com/a/11421329/456584
user456584
3
esta debería ser la respuesta aceptada, siempre y cuando :echo has("clipboard")diga 1, que es el caso de MacVim, y tengo un vialias que se ejecuta en su mvim -vlugar
jdsumsion
1
@Joseph, si :versionte muestra, -clipboardentonces la compilación de Vim no es compatible con la función del portapapeles. Estaba hablando de MacVim, que es una aplicación GUI.
George V. Reilly
136
Si el portapapeles está habilitado, puede copiar una región seleccionada al portapapeles presionando "*y
Para ver si está habilitado, ejecute vim --versiony busque +clipboardo -clipboard. Por ejemplo, no está habilitado de manera predeterminada en mi casilla 10.5.6:
% que vim
/ usr / bin / vim
% vim --version
VIM - Vi IMproved 7.2 (9 de agosto de 2008, compilado el 11 de noviembre de 2008 17:20:43)
Parches incluidos: 1-22
Compilado por [email protected]
Versión normal sin GUI. Características incluidas (+) o no (-): ...
-clientserver -clipboard + cmdline_compl + cmdline_hist + cmdline_info + comentarios
...
Si hubiera sido compilado +clipboard, podría usar el "*registro para acceder al portapapeles del sistema.
Descargué la fuente 7.2 y la compilé (fácil como tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install), y el portapapeles fue habilitado:
% que vim
/ usr / local / bin / vim
% vim --version
VIM - Vi IMproved 7.2 (9 de agosto de 2008, compilado el 24 de marzo de 2009 17:31:52)
Compilado por [email protected]
Versión normal con GTK2 GUI. Características incluidas (+) o no (-): ...
+ clientserver + portapapeles + cmdline_compl + cmdline_hist + cmdline_info + comentarios
...
Sin embargo, incluso después de compilar, no pude copiar al portapapeles cuando ejecuté vim en Terminal.app, solo en X11.app.
Compilé la última versión con + portapapeles y ahora el portapapeles nativo funciona con él como registro *. Además, establecer "set clipboard = unnamed" en su archivo .vimrc hace que el portapapeles del sistema sea el típico. De hecho, utilicé github.com/adamv/homebrew/blob/duplicates/Library/Formula/… esta fórmula homebrew para compilarla y compilarla.
rado
Hmm, no estoy seguro de por qué Vim no apareció en mi Homebrew, pero lo copié a / usr / local / Library / Formula, ejecuté brew install vim, y falló con "ld: biblioteca no encontrada para -lruby-static ". Estoy usando RVM y estaba en 1.8.7. Cuando cambié a 1.9.2 el error fue "ld: biblioteca no encontrada para -lruby.1.9.1". La solución fue usar el sistema Ruby ejecutando primero el sistema de uso rvm.
Justsee
99
Un poco más fácil que buscar la palabra "portapapeles" en lo que suele ser una larga lista de características: hacer :echo has("clipboard"). Si muestra 0, no está compilado. Si muestra 1, lo es.
ravron
3
También puede obtener vim compilado con portapapeles usando homebrew: brew install vim
Anton Koval '28 de
44
¡Tener cuidado! Tenía una +clipboardversión, pero había instalado lo --with-client-serverque permite +x11, e intentar copiar / pegar en x11 en terminal vim en macOS no funcionó :) Tuve que reinstalar sin +clientserver.
jacwah
96
Puede seleccionar visualmente el texto y escribir :w !pbcopy<CR>
O puede incluir las asignaciones de teclas a continuación en su ~/.vimrcarchivo. Cortan / copian texto en modo visual en el portapapeles del sistema operativo.
También puede seleccionar texto de la línea de comando como: 1,10w! Pbcopy para copiar las líneas 1-10 en el portapapeles. La w es importante junto con el espacio posterior para mantener el texto original en su lugar. El enlace de origen anterior ahora está roto, pero hay una discusión aquí: vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing
Tenga en cuenta que esto parece funcionar solo para seleccionar líneas enteras. No parece funcionar si solo desea seleccionar parte de una línea. stackoverflow.com/questions/16196826/…
Kevin Wheeler
1
@Kevin Wheeler: puede intentar con el siguiente comando que puede resolver el noremap de copia no lineal <silent> <leader> y: <CR>: let @ a = @ "\ | execute" normal! vgvy "\ | let res = system (" pbcopy ", @") \ | let @ "= @ a <CR>
dragonxlwang
38
comillas dobles con asterisco ( "*) antes de que cualquier comando de extracción arroje los resultados al búfer de copia. Eso también funciona para Windows y Linux.
simplemente parece emitir un carácter de campana y no tiene otro efecto para mí
Marıu
3
En X11, "* es PRIMARIO" de Vim, + es CLIPBOARD y SECUNDARIO no obtiene un registro con nombre. (No es que nadie lo use ...)
ephemient
Perfectamente. Realmente ayuda, especialmente con la selección de bloque (ctrl-v).
Sonique
Como la pregunta era específicamente sobre Mac OS X, agregar que funciona para Mac "también" es innecesario.
Paul Tomblin
@PaulTomblin está bien, es justo :-)
apprenticeDev
26
En macos 10.8, se compila vim, por -clipboardlo que deberá "*yvolver a compilar. Afortunadamente brew install vimcompilaría una nueva versión fácilmente para usted y lo será +clipboard.
Algo a tener en cuenta, bastante extraño, brew install vimcon actualizaciones vi, y novim . Por lo tanto, es posible que deba alias las cosas de manera diferente después de instalar vim con homebrew.
shridharama el
18
Seleccione visualmente el texto y escriba:
ggVG
!tee >(pbcopy)
Lo cual me parece más agradable que:
ggVG
:w !pbcopy
Como no muestra un mensaje: "Presione ENTRAR o escriba el comando para continuar"
Mac (a partir de 10.10.3 Yosemite) viene preinstalado con un sistema vim que no tiene clipboardhabilitado el indicador.
Puede compilar vim por usted mismo y habilitar ese indicador, o simplemente usar el vim de Homebrew que está configurado correctamente.
Para ver esto por sí mismo, consulte el sistema de inventario vim con /usr/bin/vim --version
Verás algo como:
$ /usr/bin/vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov 5 2014 21:00:28)
Compiled by [email protected]
Normal version without GUI. Features included (+) or not (-):
... -clientserver -clipboard +cmdline_compl ...
Nota la -clipboard
Con vim de homebrew en su lugar obtienes
$ /usr/local/bin/vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May 10 2015 14:04:42)
MacOS X (unix) version
Included patches: 1-712
Compiled by Homebrew
Huge version without GUI. Features included (+) or not (-):
... +clipboard ...
con la versión de cerveza de vim que era capaz de hacer lo que quería: destaqué las líneas utilizando Vcontinuación, :w !pbcopyy funcionó
davidpm4
5
Si su Vim no está compilado con portapapeles, desea copiar el texto seleccionado en lugar de líneas completas, no desea instalar MacVim u otra GUI, la solución más simple es agregar esta línea a su .vimrc:
Para usarlo, simplemente seleccione visualmente el texto que desea copiar y luego Control- C. Si desea una explicación completa de esta línea, lea " Cómo copiar al portapapeles en vim ".
buena respuesta ingenua pero la producción se rompe si está utilizando sub-ventanas dividido verticalmente en vim (que es realmente el caso que tengo en mente), o si el resultado es superior a una pantalla del terminal
ʞɔıu
3
Tienes razón, no pensé en estos casos. Dejo mi respuesta solo para evitar que otros den respuestas similares no útiles.
Mouviciel
2
Fakeclip implementa los buffers +y *si no son compatibles de forma nativa.
si tiene la +clipboardopción en su instalación de Vim (puede consultar con :version) y está en modo visual, puede hacerlo "+yEsto arrastrará la selección al búfer +que es el portapapeles.
He agregado los siguientes mapas a mi vimrc y funciona bien.
vmap <leader>y "+y
: Con esto puedo leader keyseguir ypara copiar en el portapapeles en modo visual.
nmap <leader>p "+p
: Con esto puedo leader keyseguir ppara pegar desde el portapapeles en modo normal.
PD: En Ubuntu tuve que instalar vim-gtk para obtener la +clipboardopción.
Actualmente estoy en OS X 10.9 y mis esfuerzos para compilar vim con + xterm_clipboard no me dieron nada. Entonces, mi solución actual es usar MacVim en modo terminal con opción set clipboard=unnameden mi archivo ~ / .vimrc. Funciona perfecto para mi.
Para los usuarios de Ubuntu, el paquete que desea recuperar para usar el portapapeles está lleno de vim. Los otros paquetes (vim-tiny, vim) no incluyen la función del portapapeles.
vim-full ya no es un nombre de paquete ubuntu. el paquete vim predeterminado (7.3.154) tiene un conjunto mínimo de características, incluido -clipboard. Instalar vim-gtk o vim-nox proporcionará una versión + portapapeles.
spazm
-1
¿Copiar al portapapeles usando el registro '+' o '*' no funciona?
Motivo: su versión particular de vim se compiló sin compatibilidad con el portapapeles. Escriba vim --verion en la consola y verá -xterm_clipboard . Instalar vim con paquetes gui resuelve este problema. En ubuntu puedes hacer esto escribiendo en shell:
sudo apt-get install vim-gui-common
Ahora nuevamente haga vim --version en la consola. ¡Lo más probable es que veas + xterm_clipboard ahora!
Entonces, ahora puede copiar cualquier cosa al portapapeles usando el registro + (como "+ yy para copiar la línea actual al portapapeles)
Copiar y pegar tradicional no funciona con las memorias intermedias de Vim y puede dañar completamente su formato. Por ejemplo, copiar 15 líneas de objetos anidados con Cmd + C y luego pegar con Cmd + V hará que pierda la comprensión de la anidación. Es muy probable que esto dependa de su configuración en su .vimrc y puede ser muy particular
"+y
.+clipboard
o+xterm-clipboard
. Puedes verificar esto convim --version | grep clipboard
. Es posible resolver esto conbrew install vim --with-client-server
.~/bin
y luego~/bin
puede insertarse en su ruta antes del vim y los sinónimos normales instalados en el sistema.alias vi='mvim -v'
2) Agregué lo siguiente a ~ / .vimrc, que asigna Ctrl + c (no Cmd + c):vnoremap <C-c> "+y
3) Teclado Maestro configurado para escribir la secuencia de^c
teclas (Ctrl + C) cuando se ejecuta en el terminal (en mi caso, iTerm2) Esto permite utilizar Cmd + c para copiar texto en el portapapeles OSX para que se pueda pegar en otras aplicaciones OSX.Respuestas:
Dependiendo de la versión de Vim que use, puedo usar el
+
registro para acceder al portapapeles." Compartir el portapapeles de Mac OS X " también puede tener algunas ideas que funcionen para usted.
fuente
"+
registro existe solo para X11 (a menos que compile vim con soporte + X11, que instalará un servidor X11 XQuartz en OS X), mientras que OS X no usa X11 como su sistema de Windows.vim
ymacvim
tienen + portapapeles. Yclipboard=unnamed
añadido a~/.vimrc
? Parece un verdadero dolor, probé todas las soluciones y actualmente tengo que usar spacemacs, cuando sé que tendré que usar el portapapeles global :)Para MacVim y Windows Gvim, simplemente agregue lo siguiente a su
~/.vimrc
:Ahora todas las operaciones tales como
yy
,D
yP
el trabajo con el portapapeles. No es necesario prefijarlos con"*
o"+
.fuente
-v
bandera (mvim -v
). Tengo el mío alias a vim y mvim.:echo has("clipboard")
diga1
, que es el caso de MacVim, y tengo unvi
alias que se ejecuta en sumvim -v
lugar:version
te muestra,-clipboard
entonces la compilación de Vim no es compatible con la función del portapapeles. Estaba hablando de MacVim, que es una aplicación GUI.Si el portapapeles está habilitado, puede copiar una región seleccionada al portapapeles presionando
"*y
Para ver si está habilitado, ejecute
vim --version
y busque+clipboard
o-clipboard
. Por ejemplo, no está habilitado de manera predeterminada en mi casilla 10.5.6:Si hubiera sido compilado
+clipboard
, podría usar el"*
registro para acceder al portapapeles del sistema.Descargué la fuente 7.2 y la compilé (fácil como
tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install
), y el portapapeles fue habilitado:Sin embargo, incluso después de compilar, no pude copiar al portapapeles cuando ejecuté vim en Terminal.app, solo en X11.app.
fuente
:echo has("clipboard")
. Si muestra 0, no está compilado. Si muestra 1, lo es.brew install vim
+clipboard
versión, pero había instalado lo--with-client-server
que permite+x11
, e intentar copiar / pegar en x11 en terminal vim en macOS no funcionó :) Tuve que reinstalar sin+clientserver
.Puede seleccionar visualmente el texto y escribir
:w !pbcopy<CR>
O puede incluir las asignaciones de teclas a continuación en su
~/.vimrc
archivo. Cortan / copian texto en modo visual en el portapapeles del sistema operativo.fuente: http://drydevelopment.com/blog/vim-pbcopy-on-os-x
fuente
comillas dobles con asterisco ( "*) antes de que cualquier comando de extracción arroje los resultados al búfer de copia. Eso también funciona para Windows y Linux.
fuente
En macos 10.8, se compila vim, por
-clipboard
lo que deberá"*y
volver a compilar. Afortunadamentebrew install vim
compilaría una nueva versión fácilmente para usted y lo será+clipboard
.fuente
brew install vim
con actualizacionesvi
, y novim
. Por lo tanto, es posible que deba alias las cosas de manera diferente después de instalar vim con homebrew.Seleccione visualmente el texto y escriba:
Lo cual me parece más agradable que:
Como no muestra un mensaje: "Presione ENTRAR o escriba el comando para continuar"
fuente
En mi caso solo tenía que hacer:
visite la solución original en superuser.com
fuente
Si está utilizando MacPorts, puede actualizar su VIM para incluir el soporte del portapapeles a través de:
Ahora usa el
"+
registro para tirar su texto directamente a su portapapeles de Mac. Funciona de maravilla.fuente
Si estás en MacOS X:
Luego, agregue a su .vimrc:
Ahora solo necesita estar en vim and do
:%y
, para tener todo el contenido copiado en su portapapeles.fuente
Use vim de Homebrew :
brew install vim
Mac (a partir de 10.10.3 Yosemite) viene preinstalado con un sistema vim que no tiene
clipboard
habilitado el indicador.Puede compilar vim por usted mismo y habilitar ese indicador, o simplemente usar el vim de Homebrew que está configurado correctamente.
Para ver esto por sí mismo, consulte el sistema de inventario vim con
/usr/bin/vim --version
Verás algo como:
Nota la
-clipboard
Con vim de homebrew en su lugar obtienes
Nota la
+clipboard
fuente
V
continuación,:w !pbcopy
y funcionóSi su Vim no está compilado con portapapeles, desea copiar el texto seleccionado en lugar de líneas completas, no desea instalar MacVim u otra GUI, la solución más simple es agregar esta línea a su .vimrc:
Para usarlo, simplemente seleccione visualmente el texto que desea copiar y luego Control- C. Si desea una explicación completa de esta línea, lea " Cómo copiar al portapapeles en vim ".
fuente
Solía:
Funcionó muy bien.
fuente
Puede usar MacVim cuando esté en una Mac para acceder fácilmente al portapapeles utilizando las teclas estándar del sistema operativo.
También es totalmente compatible con versiones anteriores de Vim normal, por lo que ni siquiera tengo que tener un separado
.vimrc
.fuente
~/bin
para anular los valores predeterminados.comando-C? Esto al menos funciona para el vim lanzado desde dentro de Terminal.app para el texto seleccionado con el mouse.
fuente
Fakeclip implementa los buffers
+
y*
si no son compatibles de forma nativa.fuente
Mi principal problema era la versión OSX predeterminada de Vim. Instalarlo a través de homebrew agregado
+clipboard
a la compilación.Puedes consultar con:
para ver si dice
-clipboard
o+clipboard
.fuente
si tiene la
+clipboard
opción en su instalación de Vim (puede consultar con:version
) y está en modo visual, puede hacerlo"+y
Esto arrastrará la selección al búfer+
que es el portapapeles.He agregado los siguientes mapas a mi vimrc y funciona bien.
vmap <leader>y "+y
: Con esto puedoleader key
seguiry
para copiar en el portapapeles en modo visual.nmap <leader>p "+p
: Con esto puedoleader key
seguirp
para pegar desde el portapapeles en modo normal.PD: En Ubuntu tuve que instalar vim-gtk para obtener la
+clipboard
opción.fuente
en mac cuando parece que algo más funciona: seleccione con el mouse, haga clic con el botón derecho y elija copiar. uff
fuente
Actualmente estoy en OS X 10.9 y mis esfuerzos para compilar vim con + xterm_clipboard no me dieron nada. Entonces, mi solución actual es usar MacVim en modo terminal con opción
set clipboard=unnamed
en mi archivo ~ / .vimrc. Funciona perfecto para mi.fuente
Lo que funcionó para mí en mi
.vimrc
fuente
Para Mac: mantener
option
presionada la tecla seguida dectrl V
mientras seleccionaba el texto hizo el truco.fuente
Shift cmd c: establecer el modo de copia Arrastre el mouse, seleccione el texto, cmd c para copiar el texto seleccionado Cmd v para pegar
fuente
Para los usuarios de Ubuntu, el paquete que desea recuperar para usar el portapapeles está lleno de vim. Los otros paquetes (vim-tiny, vim) no incluyen la función del portapapeles.
fuente
¿Copiar al portapapeles usando el registro '+' o '*' no funciona?
Motivo: su versión particular de vim se compiló sin compatibilidad con el portapapeles. Escriba vim --verion en la consola y verá -xterm_clipboard . Instalar vim con paquetes gui resuelve este problema. En ubuntu puedes hacer esto escribiendo en shell:
sudo apt-get install vim-gui-common
Ahora nuevamente haga vim --version en la consola. ¡Lo más probable es que veas + xterm_clipboard ahora!
Entonces, ahora puede copiar cualquier cosa al portapapeles usando el registro + (como "+ yy para copiar la línea actual al portapapeles)
fuente
Me encuentro con el mismo problema, después de que la instalación
macvim
aún no funciona, finalmente encontré una manera de resolver:Intente desinstalar todo vim primero,
brew uninstall macvim
brew uninstall --force vim
y reinstalar macvim
brew install macvim --with-override-system-vim
Entonces puedes usar
"*y
o"+y
, no tienes queset clipboard=unnamed
fuente
Command-c funciona para mí tanto en MacVim como en la terminal.
fuente