Tengo dos archivos abiertos en vim, cada uno en un panel tmux. Me gustaría copiar, digamos 10 líneas de un archivo a otro.
¿Cómo puedo lograr esto sin usar el mouse Copy
-> Paste
?
vim
tmux
copy-paste
Patryk
fuente
fuente
:w /tmp/lines
, luego:r /tmp/lines
en la otra instancia). O, si su Vim sabe cómo hablar con el portapapeles de su sistema, puede usar los registros+
o*
para evitar el archivo temporal.Respuestas:
Tendrás que usar atajos de tmux. Asumiendo que su atajo de comando tmux es el predeterminado: Ctrl+ b, entonces:
Ctrl+ b, [Ingrese al modo de copia (?).
Mover al inicio / final del texto para resaltar.
Ctrlspace
Comience a resaltar texto (en Arch Linux). Cuando he compilado tmux desde la fuente en OSX y otros Linux, Spacepor lo general solo funciona. El texto seleccionado cambia los colores, por lo que sabrá si el comando funcionó.
Mover al extremo opuesto del texto para copiar.
Alt+ wCopia el texto seleccionado en el portapapeles tmux. (En Mac use Esc+ w.)
Mueva el cursor al panel tmux opuesto, o una ventana tmux completamente diferente. Coloque el cursor donde desea pegar el texto que acaba de copiar.
Ctrl+ b, ]Pegar el texto copiado del portapapeles tmux.
tmux es bastante bueno para asignar comandos a atajos de teclado personalizados.
Vea Ctrl+ b, ?para la lista completa de atajos de teclado establecidos.
fuente
screen
accesos directos:Ctrl + A [
(ingrese al modo de copia),Space
(comience a resaltar),Enter
(termine de resaltar),Ctrl + A ]
(pegue).Enter
tecla.Desafortunadamente, todavía no puedo agregar un comentario a la respuesta de Alex Leach, así que voy a incluir un apéndice aquí para los usuarios de Mac OS X:
fuente
byobu
/tmux
con todas las configuraciones predeterminadas, esto funcionó, Alt + w no.Si está utilizando vim y tmux en macOS (Probado en macOS 10.12.2, tmux 2.3):
(Suponga que la combinación de teclas de prefijo de tmux es prefix. El prefijo es ctrl+ ben los valores predeterminados).
fuente
Me estoy conectando a mi servidor CentOS en una máquina Windows usando el cliente ssh de terminal ZOC . Esto es lo que funciona para mí:
<prefix>
+[
<Space>
<Enter>
<prefix>
+]
fuente
Puede utilizar el portapapeles del sistema con "* y" y "p" en lugar de los y y p normales.
fuente
"+2yy
: copie dos líneas en el portapapeles X11"+dd
- corte la línea en el portapapeles X11"+p
- pegue el portapapeles X11h,j,k,l
para mover. También he visto a veces en mi ubuntu VM, el registro "+" desaparece, por razones desconocidas. Para verificar que tiene el+
registro, puede escribir:reg
y verificar si hay una cadena"+
en la primera columna.y
yp
hacia"+y
y"+p
?Si tiene
vim
abierto, es mejor usar el vim copy pegar para copiar texto.Tmux copy paste funcionará, sin embargo, existen varias desventajas.
Primero, cuando copie varias líneas de texto, deberá seleccionar varias líneas. Tmux copy paste generalmente no entiende que
vim
tiene números de línea o hay marcas en el canal vim (como números relativos / números absolutos). Como resultado, los copiará también.En segundo lugar, descubrí que si el texto tiene un formato específico de idioma específico, e intenta copiar y pegar directamente usando tmux a vim, arruinará el formato. Esto se puede evitar mediante el uso
set paste!
. Sin embargo, esto requiere mucho más trabajo.Use
"+y
para copiar y"+p
pegarVim
proporciona de forma nativa un método para copiar y pegar entre el búfer vim y el portapapeles del sistema, usando"+y
o"*y
. Luego pegar usando"+p
o"*p
. Esto evitará copiar los números relativos en la canaleta u otras marcas aleatorias que no son relevantes para vimfuente
Un par de opciones para el uso de vim, ya que la secuencia de acceso directo de tmux es un poco larga y me resulta difícil recordar
Al igual que las respuestas anteriores, puedes usar
"+y
y"*y
para copiar y luego"+p
y"*p
respectivamente para pegar. Si desea que vim use el portapapeles de forma predeterminada, puede usarloy/p
directamente.fuente para el comando del portapapeles: https://vi.stackexchange.com/questions/84/how-can-i-copy-text-to-the-system-clipboard-from-vim
fuente