tutorial texto mac how copiar commands comandos vim vi tmux

vim - texto - tmux split



Cómo copiar y pegar entre diferentes paneles tmux ejecutando instancias de vim (6)

Ejemplo: copiar en un panel de tmux (a través de vim), luego cambiar a otro panel (ejecutar otra instancia de vim) y pegar usando el comando vim paste. Sé que esto se puede hacer a través de tmux (usando el prefijo +]), pero sería muy útil si puedo copiar y pegar utilizando enlaces vim ya que solo estoy cambiando entre diferentes paneles que ejecutan vim.

¿Algunas ideas?


Actualmente estoy atascado con una computadora portátil que ejecuta Windows en el trabajo, pero hago todo mi desarrollo en un servidor que ejecuta Linux, así que termino trabajando en una sesión de tmux sobre PuTTY todo el día.

Quería copiar texto entre instancias de vim que se ejecutan en diferentes ventanas en mi sesión de tmux. Intenté usar * registro para copiarlo en el portapapeles del sistema, pero como estoy conectado a través de PuTTY no tengo una sesión X, por lo que no hay ningún portapapeles del sistema, incluso si lanzo gVim en lugar de vim. (Pude haber podido usar x-forwarding o algo así para solucionarlo, pero no quería instalar un x-server en Windows).

Pensé que debería haber una manera de usar el buffer de copia / pegado de tmux desde vim en lugar del teclado del sistema, y ​​con la seguridad de que alguien haya escrito un complemento para eso .

La instalación de fakeclip agrega un nuevo registro, & , que se asigna al buffer de pegar de tmux. Como todas mis instancias de vim están dentro de la misma sesión de tmux, esto hace que sea súper simple tirar / poner texto entre ellas.

La documentación del complemento dice que fakeclip también debería funcionar con la pantalla gnu, pero yo personalmente no lo he probado.

tl; dr

Instale el complemento fakeclip , y luego puede usar " y y para entrar en el búfer de tmux, y " & p para ponerlo en el búfer de tmux.


Aunque estoy de acuerdo en que es mejor usar solo una instancia de vim, puedes hacerlo solo con tmux. Tiene un modo de copia incorporado. Mi tmux.conf está configurado como:

setw -g mode-keys vi unbind [ unbind p bind C-y copy-mode bind p paste-buffer bind -t vi-copy v begin-selection bind -t vi-copy y copy-selection bind -t vi-copy Escape cancel

De modo que puede usar el prefix-<Cy> para activar el modo de copia, /search term como un ejemplo para ir donde lo desee, v para seleccionar visualmente, y para tirar a tmux. Luego, vaya a otra sesión de vim y entre al modo de inserción. Use prefix-p para pegar lo que está en el buffer de pegar tmux. También hay formas de copiar el buffer de pegar de tmux al portapapeles del sistema.


Lo siento, estoy intentando convencerte de que uses las funciones incorporadas de vim.

Para facilitar la copy/paste , puede abrir archivos en otra Tabpages:

:tabe /path/to/another/file

Usa gt o gT para cambiar Tabpages.

O divide la ventana para editar otro archivo:

:sp /path/to/another/file

Use Ctrl-w w para cambiar Windows.
Para dividir la ventana verticalmente, use :vsp file

Actualizar:

Este es mi archivo .tmux.conf :

# vim setw -g mode-keys vi bind [ copy-mode bind -t vi-copy v begin-selection bind -t vi-copy y copy-selection bind -t vi-copy V rectangle-toggle bind ] paste-buffer # buffer bind Space choose-buffer

Solo los uso cuando necesito copiar la salida del terminal.


Me han utilizado esta práctica encuadernación durante varios años :)

" copy to buffer vmap <C-c> :w! ~/.vimbuffer<CR> nmap <C-c> :.w! ~/.vimbuffer<CR> " paste from buffer map <C-p> :r ~/.vimbuffer<CR>


Puede copiar el contenido en el portapapeles utilizando enlaces vim, luego cambiar al panel y pegarlo. Las siguientes combinaciones de teclas pueden ser útiles.

noremap ty "+y noremap tY "+Y // copy a whole line to the clipboard noremap tp "+p // put the text from clipboard after the cursor noremap tP "+P // put the text from clipboard before the cursor

El "+ registro" se utiliza para acceder al clipborad del sistema en Vim.

Algunos consejos útiles:
1. Puede presionar v o V o ctrl-v para ingresar al modo visual, luego seleccionar el contenido que desea extraer, y presionar ty para copiarlo en su portapapeles.
2. ty se puede combinar con otras mociones. Por ejemplo, tyaw se puede usar para copiar una palabra debajo del cursor al portapapeles. tyib copia el contenido entre paréntesis. tyi" copia el texto dentro de doble cita, etc.

Consulte también Cómo hacer que vim paste (y copie) en el portapapeles del sistema? para una explicación más detallada.


solución en Fedora24

necesitas usar vimx en lugar de vim

pon tu .bashrc o .zshrc

alias vi=''vimx'' alias vim=''vimx''

y luego puedes copiar fácilmente entre los paneles vims / tmux

$ vim --version | grep clipboard -clipboard +insert_expand +path_extra -toolbar +eval +mouse_dec +statusline -xterm_clipboard $ vimx --version | grep clipboard +clipboard +insert_expand +path_extra +toolbar +eval +mouse_dec +statusline +xterm_clipboard

vimx es parte de vim-enhanced-2: 7.4.1868-1.fc24.x86_64 que probablemente haya instalado