vim tmux

vim - tmux copy to system clipboard



Arregle Vim+Tmux yank/paste en el registro sin nombre (4)

Mientras uso vim dentro de una sesión de tmux, no puedo jalar o pegar al registro sin nombre. Ir a un registro nombrado funciona bien, pero el nombre nunca funciona.

El error es:

E353: Nothing in register *

Sin tmux, vim funciona bien con mi configuración actual. ¿Cómo lo arreglo para poder usar y luego p sin errores y sin especificar el registro?


Última respuesta, pero también podría ser que su .tmux.conf contenga la siguiente línea:

set -g set-clipboard off

combinado con un .vimrc contiene

set clipboard=unnamed

esto llevará a vim a tratar de usar un portapapeles que no está allí.


Desde el mensaje de error ( Nothing in register * ), parece que cuando haces un plain ? p , su instancia de Vim está utilizando el * register lugar del registro sin nombre * . Probablemente esto se deba a que la opción del clipboard incluye el valor unnamed . Cuando se configura de esta manera, Vim usará * registro en lugar del registro sin nombre para operaciones de extracción, eliminación, cambio y puesta por defecto (es decir, a menos que especifique otro registro con un " prefijo; por ejemplo, "ap para colocar desde a registro) .

* El registro sin nombre se llama en realidad " (comillas dobles). Solo está" sin nombre "en el sentido de que no tiene que nombrarlo para usarlo (es el valor predeterminado). Es decir, no tiene que decir ""p para poner desde el registro sin nombre, solo p .

El valor predeterminado del clipboard no contiene un unnamed , por lo que probablemente provenga de un poco de su configuración (o un complemento). El comando :verbose set clipboard? le mostrará la secuencia de comandos que establece el valor actual. Si esto se hace en su archivo de configuración, es posible que no desee hacerlo cuando se ejecuta bajo tmux . P.ej:

if $TMUX == '''' set clipboard+=unnamed endif

Alternativamente, puede haber alguna manera de permitir que las instancias de Vim-inside- tmux accedan a la selección / portapapeles de la GUI (por lo tanto, trabaje con el * registro y / o unnamed en el clipboard ). Si está ejecutando Mac OS X, es posible que desee ver mi envoltorio provisional que vuelve a habilitar el acceso al portapapeles para los procesos que se ejecutan dentro de una sesión de tmux . Si está utilizando algún otro sistema operativo o GUI, necesitará averiguar cómo Vim normalmente hablaría con la GUI y por qué no funciona (por ejemplo, el valor de PANTALLA incorrecto en X11, posiblemente debido a la conexión a una sesión anterior que se está ejecutando). un shell que tiene un valor desactualizado).


El complemento fakeclip hace que el registro del portapapeles se comporte como se esperaba en muchos terminales y tiene soporte para tmux / screen. ¿Lo estás usando? Puede resolver su problema.

Además, es posible que le interese este consejo ... No es aplicable a su pregunta, sino que está relacionada. Dependiendo del tipo de sistema / terminal con el que ejecute tmux, es posible que necesite algunos ajustes en su .tmux.conf . Por ejemplo, aquí hay un extracto de mi .tmux.conf en OS X (con algunas instrucciones en los comentarios):

# To use pbcopy and pbpaste on OS X, get this wrapper and install # git clone https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git # cd tmux-MacOSX-pasteboard/ # make reattach-to-user-namespace # mv reattach-to-user-namespace /usr/local/bin # After installing, the default command can be reset to use the ''reattach-to-user-namespace'' # wrapper that was compiled/installed as descripted above. set -g default-command "reattach-to-user-namespace -l /bin/bash" # #Next, create Ctrl-c and Ctrl-v mappings bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy" bind C-v run "tmux set-buffer $(reattach-to-user-namespace pbpaste); tmux paste-buffer"


Esto es lo que funciona para mí en vim / tmux / osx:

  1. Instalar Homebrew
  2. Instalar volver a conectar al espacio de nombres de usuario: brew install reattach-to-user-namespace
  3. en .vimrc: set clipboard=unnamed
  4. Dile a tmux que use el portapapeles del sistema: en .tmux.conf: set-option -g default-command "reattach-to-user-namespace -l bash"

Fuente: https://coderwall.com/p/j9wnfw