Estoy tratando de copiar y pegar texto de vim. Estoy haciendo v para ingresar al modo visual, luego y una vez que seleccioné mi bloque.

Parece que se copia el texto en el portapapeles de vim, porque p lo pegará. Pero en otro programa (por ejemplo, Chrome), hacer clic derecho-> pegar no pega el texto correcto. ¿Cómo copio texto en el portapapeles correcto?

Respuesta

Lo siguiente funcionará solo si vim --version indica que tiene la función +xterm_clipboard. De lo contrario, tendrá que instalar paquetes adicionales o volver a compilar vim con esa característica agregada.


En realidad, hay dos opciones para esto:

"+y 

copia en el búfer del portapapeles «habitual» (para que pueda pegar usando Ctrl + V, haga clic con el botón derecho y seleccione «Pegar», etc.), mientras

"*y 

copia a la selección X11; puede pegar desde este búfer haciendo clic con el botón central.

Tenga en cuenta que "* y "+ funciona en ambos sentidos. Entonces, si ha seleccionado algún texto en otra aplicación, puede pegarlo en vim usando "*p y si ha copiado algún texto (usando, digamos, Ctrl-C), entonces puede pegar en vim usando "+p.

Comentarios

  • @Tshepang no está funcionando desde putty. ¿qué debo hacer?
  • @RahulPatil No lo sé; tal vez haga una pregunta separada, tal vez en superusuario (dado que es ‘ una herramienta de Windows, sería más bienvenida allí).
  • @RahulPatil: si está usando putty, entonces está editando el archivo en un servidor remoto, no en su máquina local. Por lo general, el servidor remoto ‘ no sabe nada sobre el portapapeles de su máquina local. Si estaba usando un escritorio Linux, entonces puede ssh con reenvío X (siempre que haya instalado las bibliotecas X en el servidor), pero como putty se ejecuta en Windows, no ‘ no tiene X corriendo para que puedas ‘ t reenviarlo.
  • Hola a todos, ¿Cómo se escribe » + y? ¿Debo escribirlo en modo Visual o en modo de comando? Es una tontería, pero no puedo entenderlo.
  • @AlindBillore: En modo comando. Literalmente, presione las teclas shift' luego shift= luego y (no todas a la vez, una después del otro, excepto los turnos, por supuesto).

Responder

Si está utilizando vim> = 7.3 .74, entonces puedes poner esto en tu vimrc:

set clipboard=unnamedplus 

Que usará automáticamente el búfer + (el portapapeles del sistema) de forma predeterminada. Luego, para tirar (copiar), simplemente use el comando y normal, etc.

Sin embargo, encontré este comportamiento bastante molesto, ya que comandos como d colocó el texto en el que operan en el búfer predeterminado, lo que significaba que no podía «hacer un dd rápido y pegar una línea de Internet , por ejemplo.

Comentarios

  • + es un registro del portapapeles
  • Con respecto a su último punto, dd significa » cortar una línea «, de modo que ese sería el comportamiento esperado. En el raro caso en que lo desee para borrar una línea en el olvido, "_dd hará el truco.
  • también como señala @HamishDowner en su respuesta: Lo siguiente funcionará solo si vim --version indica que tiene la función +xterm_clipboard. De lo contrario, tendrá que instalar paquetes adicionales o volver a compilar vim con esa función agregada.

Responder

Mantenga presionada la tecla shift y seleccione el texto con el cursor del mouse.
El texto se copiará al portapapeles.

Esto también funciona para pegar desde el portapapeles en vim.

Para ser claros, esto funciona para vim ejecutándose en una terminal como xterm.

Comentarios

  • @LoopSpace para selecciones de varias líneas, esto también copiará los números de línea cuando set nu esté habilitado . Así que probablemente quieras alternar los números de línea con algún atajo o ejecutar el comando :set nonu antes de cada selección
  • En MAC, mantén presionada la tecla de opción y selecciona el texto con la cursor del mouse
  • ¿No ‘ t funciona para mí usando vim 8.0 + gnome-terminal
  • Solución no compatible con términos multipane como tmux.
  • Esto no se copia en el portapapeles, esto se copia en el primario .Vea la distinción en el artículo de la Wiki de Clipboard Arch .

Respuesta

Encuentro los comandos estándar "+gP y "+y muy difíciles de usar. Así que «he reasignado Ctrl-Y para tirar en el portapapeles y Ctrl-P para pegar desde el portapapeles. Agregue esto a .vimrc

nnoremap <C-y> "+y vnoremap <C-y> "+y nnoremap <C-p> "+gP vnoremap <C-p> "+gP 

Responder

Cuando revisé 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 y luego volví a verificar

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.

Responder

No importa, Encontré la respuesta: está escrita en los menús de vim.

"+y 

Muy intuitivo.

Comentarios

  • ¿Estás usando gvim?
  • @ nozimica- sí
  • Eso ‘ s también está disponible en vim que se ejecuta en un xterm o un emulador de terminal similar bajo X (si vim está compilado con la función +xterm_clipboard).

Responder

Solo para agregar una respuesta no específica de vim: puede usar Ctrl+Shift+C para copiar al portapapeles del sistema en Ubuntu (si la funcionalidad es proporcionada por su emulador de terminal, gnome-terminal para uno lo proporciona). Ctrl+Shift+V pega en otra ventana de terminal, Ctrl+V normal pega en una aplicación GUI.

Además, si selecciona el texto en la terminal, luego haga clic en el medio, se pegará desde el portapapeles X11.

Comentarios

  • Por alguna razón no ‘ t funciona. Simplemente seleccione con el modo visual, copie con ctrl-shift-C, luego pegue en otra aplicación usando Ctrl-shift-V? El texto no ‘ no se copia para mí.
  • @ ripper234: esto no funciona si estás usando gvim. Como dijo crazy2be, esta funcionalidad es de su emulador de terminal.
  • @ ripper234: 1) Es una funcionalidad proporcionada por su emulador de terminal (gnome-terminal para uno la proporciona), 2) Ctrl + Shift + V es para pegar en el terminal , las aplicaciones GUI todavía usan Ctrl + V como de costumbre. Yo ‘ editaré la respuesta para que sea más clara.
  • si usa shift-control mousedrag – seleccionar texto, copiar y pegar desde una ventana de búfer se vuelve fácil.

Responder

Mantenga presionada la tecla MAYÚS y seleccione el texto del mouse para copiarlo.

Luego pega en otro programa con CTRL + v.

Funciona en la terminal de mi Ubuntu 16.04. No estoy seguro acerca de gvim y otros sistemas.

ingrese la descripción de la imagen aquí

Comentarios

  • Eso no funciona.
  • respuesta creativa

Respuesta

De forma predeterminada, si instala la versión ligera de vim, no tendrá la +xterm_clipboard función en (vim --version | grep xterm), que es necesaria para usar * y + se registra fuera de vim.

Para habilitarlo, debe compilar vim usted mismo o instalar una versión de vim que viene prehabilitada. Usé vim-gnome: sudo apt-get install vim-gnome. Si realiza vim --version | grep xterm, verá que ahora es +xterm_clipboard.

Ahora, intente copiar al + y * y debería funcionar.

Respuesta

Solo para agregar, si algo funciona, intente cambiar la terminal que envuelve vim (si está usando vim desde la terminal). Descubrí que, por ejemplo, el portapapeles es inaccesible por guake mientras se puede acceder desde gnome-terminal.

Respuesta

Para Ubuntu 14.04 y superior:

  • Simplemente seleccione el texto que desea copiar. Y luego haz clic en el botón de desplazamiento central con el mouse y ve al portapapeles

  • Y haga lo mismo allí también (haga clic en el botón de desplazamiento central con el mouse).

Funciona al 100% en ambos vim y tail en Ubuntu.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *