Copiar de vim a la consola de python en tmux

8

He instalado tmux.

tmux -V
tmux 2.3

Establecer mi archivo de configuración.

cat  ~/.tmux.conf
set -g mouse on

Ingrese tmux y abra dos ventanas verticales, abra la consola python3 a la izquierda, abra vim a la derecha.

ingrese la descripción de la imagen aquí

Ahora mueva el cursor al comienzo de la primera línea a la derecha con el mouse.
Ingrese al modo normal e ingrese 2yy+, para copiar dos líneas en mi +registro.
Mueva el cursor en la python3 consoleventana izquierda , ¿cómo puedo pegar el contenido +registrado en la consola de Python? @ Kent, haz lo que dices:
1.Mueve el cursor al comienzo de la primera línea y escribe "+2Y
2.Mueve el cursor a la ventana izquierda, y haz clic con el botón central del mouse, no pasa nada. 3. ctrl+bPresione y luego presione la ]tecla.

ingrese la descripción de la imagen aquí

vista_coder
fuente
vim-tmux-clipboard plugin podría ayudar.
Amadan

Respuestas:

3

primero tu vim debe compilarse con +clipboardseevim --version | grep 'clipboard'

Para copiar (o eliminar) en cualquier registro vim puede usar la siguiente sintaxis

  • "<register name><oprator><motion>(ver :h registers) ej.
    1. "ayy(copiar la línea actual en el registro a) o
    2. "bdd(eliminar la línea actual en el registro b) o
    3. "*ce(eliminar al final del trabajo actual y colocar contenido en el registro *usando ctambién lo pondrá en modo de inserción
  • para copiar toda la línea puedes usar yy
  • y el portapapeles del sistema se asigna a uno +o *(según el sistema operativo)

para copiar toda la línea en el portapapeles del sistema, puede usar

  • "*yyo "+yy(dependiendo del sistema operativo)

o copiar 2 líneas

  • "*2yyo "+2yy(para copiar la línea actual y la siguiente a la actual)

una vez que el contenido se copia en el portapapeles del sistema, puede pegarlo en tmux usando ( command + vo ctrl + shift + v)

o para mapear el portapapeles del sistema con el búfer de pasta tmux, consulte /unix/67673/copy-paste-text-selections-between-tmux-and-the-clipboard#72340

Tripurari Shankar
fuente
1

2yy+no NO copiar dos líneas en el +registro, en cambio, da un tirón a dos líneas "reg, a continuación, mueve el cursor al primer carácter no en blanco en la línea siguiente

En el lado vim puedes hacer: "*2Yluego haz clic con el botón central del mouse en la consola de Python.

  • o simplemente seleccione las líneas que desea copiar en vim con el mouse, luego haga clic con el botón central en la consola de Python
Kent
fuente
Puedo presionar el botón central en gedit para pegar líneas en él, no sé por qué no puedo pegarlo en la ventana izquierda.
coder_view
¿Debo escribir alguna configuración en ~ / .tmux.conf?
coder_view
1

No me gustó mucho la solución aceptada de que depende de un entorno gráfico para el portapapeles, ya que esto no funciona cuando vimno se puede acceder al portapapeles, que es casi siempre el caso de las sshconexiones. Así que me levanto con otra solución:

En lugar de usar el portapapeles externo, vimpuede pasar el texto directamente a tmux'pegar búfer al canalizarlo

tmux load-buffer -

Después de eso, puede pegar el contenido del búfer prefix + ]en el tmuxpanel activo .

Hay varias formas de pasar el texto de vima tmux:

# to write the current line into the tmux buffer:
:.w !tmux load-buffer -

# to write all *lines* within the visual selection into the tmux buffer:
:'<,'>w !tmux load-buffer -

# to pipe the content of a register (e.g. from a previous selection) into the buffer:
# @" being the unnamed register, @0 - @9 the numbered registers, and so on
:call system('tmux load-buffer -', @")

Al tmux paste-bufferusarlo, incluso puede activar el pegado en el panel correcto al mismo tiempo:

# assuming the python pane is at :0.0
:call system('tmux load-buffer -; tmux paste-buffer -t :0.0', @")

Ahora también puede asignar fácilmente la última línea a una tecla para enviar el texto seleccionado visualmente al pythonpanel.

acran
fuente