Estoy usando el sistema Linux. Se abren dos vims en dos terminales. Ahora me gustaría copiar texto de A a B. Una forma de hacerlo es seleccionar texto en A, usar el mouse para copiar, luego cambiar a B, en el modo de inserción, el comando <c-r>+
pegará el texto.
¿Hay alguna forma de hacerlo sin usar el mouse? como "+yy
en A, cuando cambias a B o<c-r>+
,? Exploré un par de combinaciones en vano. Y busqué "copiar a través de terminales", pero no encontré nada.
@statox usuario sugiere una solución usando el modo visual, es decir, v$"+y
en A, cuando el interruptor a B, o<c-r>+
.
¿Hay alguna forma simple de copiar el texto en A sin entrar en modo v? Es cierto que entrar en modo v no implica demasiados golpes de tecla, solo pregúntate si hay una mejor manera. P.ej. si el cursor está en el medio de una línea, yy
copia la línea completa (para registrarse "
), mientras 0v$y
hace lo mismo con una pulsación de tecla adicional.
O bien, mi pregunta se puede reducir a si hay alguna forma con menos pulsaciones de teclas que 0v$"+y
para copiar de manera que pueda usar <alt-tab>o<c-r>+
para pegar.
fuente
"+y
y, en la otra instancia de vim, coloque el registro del portapapeles"+p
. O duplicado de esto ?y
con un movimiento (:help motion.txt
) o un objeto (:help object-select
). Si tira y pega a través de las instancias de Vim a menudo, puede encontrar esa configuraciónclipboard
para incluirunnamed
ounnamedplus
útil. Ver:help 'clipboard'
. Luego, copiar entre instancias debería funcionar.0v$
es el mismo queV
. Y es fácil de hacer una asignación para"+y
::nnoremap <Leader>y "+y
. Entonces eso lo reduce aV\y
.V"+y
, 4 pulsaciones de teclas.Respuestas:
Puede verificar si Vim está construido con soporte para portapapeles con:
Si el resultado es
1
, lo siguiente debería ser suficiente para lograr su objetivo:Puede hacerlo todo mucho más sencillo sincronizando el registro del portapapeles y el registro predeterminado con esta configuración en su
vimrc
:Si la salida de
:echo has('clipboard')
es0
, considere instalar un Vim apropiado comovim-gtk
ovim-gnome
(el nombre del paquete puede diferir de una distribución a otra).fuente
Creo que la solución que ya mencionas en tu pregunta es la correcta. Si desea reducir la cantidad de pulsaciones de teclas, simplemente puede crear un mapa, p. Ej.
Vea la segunda entrada aquí .
fuente
Para ampliar la respuesta de @ romainl, (con soporte para portapapeles) puede usar registros que se comparten con el portapapeles de todo el sistema.
Mediante la ejecución de estos comandos, que son y Anking / copiar / almacenamiento de contenidos seleccionados en los registros, y p asting a destino Vim-terminal. Estos dos registros especiales
+
y*
se comparten con el portapapeles de todo el sistema (y, por lo tanto, muchos otros programas como el navegador web, gedit, etc.). El registro+
está asociado con el búfer de copiar / pegar y*
está asociado con el búfer de selección (uno que inserta una copia de la selección con un clic central en un campo de texto en, digamos, Ubuntu) y se puede pegar usandoctrl + v
(ctrl + shift + v
en gnome-terminal).fuente
1) En Fedora utilizo la siguiente configuración:
vim-X11 viene con soporte para portapapeles; tal vez en otras distribuciones sea similar.
2) Establecer un alias en mi .bashrc
3) En .vimrc:
Ahora el tirón habitual en Vim va al portapapeles del sistema y cada Ctrl-C fuera de vim se puede pegar en vim.
fuente
Si está usando un Mac (OS X), puede instalar bpcopy (usando cerveza instalar pbcopy --ver http://brew.sh/ para más detalles). Luego ejecute lo siguiente (línea de comando de forma recta) sin tocar el mouse:
EJEMPLO:
1) En la TERMINAL # 001 :
2) Puede cambiar al terminal # 002 (sin usar el mouse) usando las teclas de acceso rápido integradas en la aplicación de terminal de OSX: command+i
3) En TERMINAL # 002 : Abra el nuevo archivo en vim
4) Ponga vim en modo de inserción coni
5) Inserte el texto del portapapeles con command+ V(para pegar desde el portapapeles en una Mac)
6) ¡Disfruta el resto de tu día!
fuente