2012-06-08 19 views
11

Me encanta Tmux y su modo de copia con comandos Vi, pero estoy realmente molesto por el hecho de que este modo está muy lejos de ser tan eficiente como el real Vim.Tmux copy mode: cómo crear tu propio comando?

Por ejemplo, no hay ninguna combinación de teclas para copiar una palabra (yw), siempre debo "ir al principio de una palabra" "comenzar selección", "ir al final de la palabra" y luego "finalizar selección ". Muchas operaciones cuando solo necesito hacer yw en vim.

Busqué una forma de crear mi propio comando "yw" en el modo de copia de Tmux. Encadenar todas las operaciones necesarias es una buena idea, pero un enlace simple con comandos separados por ; simplemente no funciona (cosa similar funciona en modo no copia). ¿Hay algo que extraño? ¿O es el modo de copia de Tmux solo limitado y no tan scriptable como lo necesito?

+0

¿Cómo llamaste a 'bind-key'? – chepner

+2

Algo así como: bind-key -t vi-copy X palabra-previa \; begin-selection \; palabra siguiente \; copy-selection – Jooj

Respuesta

4

tengo esto en mi conf tmux:

# vi-style controls in copy mode 
set-option -g status-keys vi 
set-window-option -g mode-keys vi 

# v and y like vi in copy-mode 
bind-key -t vi-copy 'v' begin-selection 
bind-key -t vi-copy 'y' copy-selection 

Ahora después de ir copia en modo i puede seleccionar fácilmente las palabras por:

vw

y copiar con

y

En tmux tiene que seleccionar algo para copiar. No hay nada como copiar en el modo normal, como lo sabe de los comandos habituales de vi/vim. Desafortunadamente, solo puede usar una clave (como v o y) para cada argumento tmux.

Puede encontrar más información sobre el movimiento de vi tmux comandos aquí: https://superuser.com/a/197272/57890

+0

¿Hay un buen truco de tmux para usar el "tartget" con bind o es solo algo que tiene localmente? – wonbyte

0

Hay un parche para tmux que permite crear procedimientos y enlazar cualquier número de acciones de las pulsaciones de teclado 'modo': http://ershov.github.io/tmux/

2

En aguas arriba (2.4+) tmux versión de este han sido cambiados, con el fin de crear unos enlaces para empezar selección que necesita utilizar -T y enviar-claves con -X.

Más información en tmux changelog.

Aquí mis enlaces para modo de copia vi como ejemplo:

# Bind `v` to trigger selection  
bind-key -T copy-mode-vi v send-keys -X begin-selection 

# Bind `y` to yank current selection 
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel 

# Rebind `mouse click + drag button release` to not jump away from context 
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection 

Si que está utilizando emacs modo de copia, en sustitución de copy-mode-vi con copy-mode debería ser suficiente.