Estoy usando tmux con las teclas vi, y copiar / pegar funciona bien siempre que esté seleccionando una línea de texto, o si solo tiene una ventana. Cuando quiero seleccionar un bloque de texto (varias líneas, pero no todo el ancho), me encuentro con problemas. Si tengo varias ventanas vim abiertas, seleccionaría texto de todas ellas, y lo que necesito es seleccionar texto solo de una ventana. Es decir, como una selección visual en vim.
¿Es posible hacerlo?
Respuestas:
Asegúrese de revisar la parte inferior de esta publicación para ver los enlaces necesarios que deben ir a su archivo .tmux.conf.
Supongo que su clave de prefijo es Ca:
Para hacer una selección rectangular de texto de (1,1) a (2,2) en tmux:
Tenga en cuenta que presionar spacees necesario para la selección del rectángulo.
Para seleccionar líneas como lo haría normalmente, vaya al modo de copia y presione v, seleccione con las teclas jkhl y presione y.
Tengo estos enlaces en mi .tmux.conf:
Antes de la versión 2.4 (20 de abril de 2017) :
Después de la versión 2.4 :
Es importante desvincular el enlace predeterminado de rectángulo-alternar:
De lo contrario, el nuevo enlace 'Cv' no funciona.
Nota: para tener un single
.tmux.conf
que funcione en todas las versiones, vea esta pregunta .fuente
send
ysend-keys
. Veo en superuser.com/questions/196060/selecting-text-in-tmux-copy-modesend-key
se utiliza. ¿También son importantes las comillas?Puede seleccionar un bloque visual al igual que en vi-type
v
antes de comenzar la selección. En la página de manual, esto se llama "alternar rectángulo".fuente
Como señala Lars, en
v
realidad hace lo que está pidiendo al alternar entre el modo rectángulo y el modo de selección de línea completa.space
yenter
se usan respectivamente para comenzar una nueva selección y copiarla. Ingrese al modo de copia usando su prefijo seguido de[
y pegue su selección copiada en cualquier ventana de tmux usando]
Esto me confundió también desde
v
funciona en vim comospace
hace en tmux, para comenzar la selección.La emisión
:list-keys -t vi-copy
en tmux mostrará la tabla completa de comandos en modo copia.fuente
Dado que ninguna de las otras respuestas dan una solución óptima al problema, no estoy por encima de la nigromancia.
Hay una manera de hacer que la selección de bloques funcione de la misma manera que lo hace en Vim, sin tener que presionar la barra espaciadora. Solo un simple Ctrl-V, arraigado en tu memoria muscular.
Requiere editar su .tmux.conf (pero usar el modo vi ya lo hace) y no estoy seguro de que funcione para tmux <2.4.
Agregue esto a su .tmux.conf para replicar la selección de Vim y los enlaces de extracción:
Ingrese al modo de selección y navegue hasta donde desea comenzar la selección. Ahora
v
comienza la selección regular (carácter por carácter, en línea),<C-v>
comienza la selección de bloque yV
(shift-v) comienza la selección de línea. Independientemente del tipo de selección, sey
ajusta al búfer de pasta tmux (o al portapapeles X; consulte los comentarios de código anteriores).Igual que Vim.
fuente
EDITAR: Después de verificar el código fuente, he reescrito mi respuesta por completo.
Originalmente pensé que esto no era posible porque no podía hacer que esto funcionara, pero las otras respuestas son correctas sobre
v
ser la clave correcta para esto, pero no es obvio cómo usar esto, especialmente si estás acostumbrado a vim.Además, no funcionaría para mí porque tenía que
v
hacerlobegin-selection
; creo que debo haber copiado ciegamente esta idea de otro lugar para imitar la forma vim de comenzar una selección inteligente de personajes, sin saber que causaría problemas más adelante con el camino. Bloquear selecciones.Una vez que eliminé este enlace (al comentar la línea en mi
.tmux.conf
y reiniciar tmux), comenzó a funcionar, pero sigue siendo bastante confuso porque no es lo mismo que vim.Con enlaces predeterminados, debería funcionar de la siguiente manera:
setw -g mode-keys vi
en su.tmux.conf
.C-a [
para iniciar el modo de copiav
Space
para comenzar la selecciónv
nuevamente para alternar la selección nuevamente en la selección de caracteres o viceversa.No tiene que escribir el
v
antes de presionarSpace
. Puede comenzar la selección de caracteres conSpace
primero yv
luego presionar para alternar al modo de selección rectangular.Es bastante diferente de vim en que en tmux tienes que escribir dos caracteres:
Space
yv
entrar en modo de selección rectangular. En vim solo tienes que escribirCtrl-V
.También en vim
v
comienza una selección de caracteres sabios, no de bloque.Lamentablemente, no parece haber un modo de selección en línea en tmux (
Shift-v
en vim).EDITAR: Parece que la versión 2.0 de Tmux proporciona un modo de selección en línea
Shift-v
(¡aún no lo he probado!)fuente
Shift-v
en la versión 2.0 de marzo de 2015), ciertamente después de mi respuesta y mucho después de su respuesta original. Quizás usted y yo estamos hablando de dos cosas diferentes cuando hablamos de la selección en línea. Por favor compare con los modos de selección 3 en VIM (conv
,Shift-v
yCtrl-v
).v
selección es de carácter sabio. Estoy en la versión 1.9a y no tengo la selección vim-like line-wise. Entonces, con la versión 2.0, los tres modos exactos que tiene vim también son posibles en tmux, ¿verdad?