Copia / pegado del vimperador


23

Estoy probando Vimperator . Principalmente lo quería para el desplazamiento hjkl, y me gusta su sistema de "pistas" para los siguientes enlaces. Estas dos características son realmente todo lo que necesito; Yo creo que.

No me importan las otras características, solo a veces se interponen en mi camino.

Lo que más me molesta es copiar / pegar. Estoy acostumbrado a Ctrl+ c/ Ctrl+ v, no me importa usar otro atajo, pero ...

:help yank indica que la copia del texto seleccionado se realiza con Y, pero el único método mencionado para pegar es el botón central del mouse.

¡Esto es tan ridículamente en contra del espíritu de Vim!

¿Cómo puedo pegar en Vimperator sin usar el mouse?


Las respuestas en esta pregunta están desactualizadas (lo cual tiene sentido ya que tienen siete años) Si aterrizaste aquí desde google, estas no son (a partir de hoy) las respuestas que estás buscando
Arthur Ulfeldt,

Respuestas:


15

Lo mejor y más fácil que puede hacer es reasignar las teclas. No es dificil. Pon esto en tu _vimperatorrc (o .vimperatorrc en Linux)

noremap <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

<C-v>está asignado de forma predeterminada al modo "Pasar siguiente", lo que significa que la siguiente tecla que presione se envía directamente a Firefox, sin que vimperator la procese y la coma. Por lo tanto, las asignaciones anteriores simplemente activan el modo "Pasar siguiente" y envían el atajo respectivo.

Incluso hay un complemento vimperator que lo extiende aún más y reasigna todos los accesos directos comunes de Windows , para que se comporten como se espera.


3
para <Cv> (pegar) debe ser inoremap
hasen

aceptado para el enlace del complemento! que es increíble y soluciona el problema
hasen

2
Parece que la versión actual (3.8.1) puede tener Cc y Cv haciendo copiar y pegar a nivel del sistema operativo de forma predeterminada ... No pude encontrar nada al respecto en los registros de cambios, pero acabo de cambiar de Pentadactyl a la última Vimperator y Cc y Cv funcionaron como yo quería.
driftcatcher

@hangtwenty parece ser correcto, la respuesta aquí ahora está desactualizada
Arthur Ulfeldt, el

36

Me sorprende que no se haya dado una respuesta más precisa a esta pregunta. El enlace del complemento de la respuesta elegida resolvió el problema del OP, pero en realidad nadie explicó cómo pegar algo en un campo de texto sin usar el modo de paso a través (Cv).

Si está en un campo de texto en modo INSERTAR y desea pegar algo, lo más obvio en vi-land es presionar ESC y p para pegar. En vimperator, esto no funciona: ESC lo saca completamente del modo INSERT y lo pone en el modo en que trabaja con la página / pestaña en su conjunto.

Vimperator resuelve esto al tener un modo BÁSICO adicional: TEXTAREA. Cuando esté en modo TEXTAREA, puede usar los comandos compatibles que usaría en vi.

Enter TEXTAREA mode: C-t
Paste:    p
Copy line:    yy
Delete Char:  x
Delete Line:  dd

Etc.

Esto no parece estar bien documentado: terminé imaginándolo principalmente por error. Funciona igual en cuadros de texto multilínea y de una sola línea.


Gracias por este comentario. Esto es exactamente lo que necesitaba para entender mi vimperator y formar campos.
ZweiBlumen

@RevAaron cuando ingresa al modo TEXTAREA, ¿es esto como el entorno VI tradicional y la mayoría de las teclas VI funcionarían para editar texto? Y también noté (nuevamente por accidente) cuando presiono "d" y luego "s" o "a" en el modo TEXTAREA, cambia el modo al llamado VISUAL. Le agradecería si pudiera darme información sobre esto. o incluso si lo desea, puedo plantearlo como una pregunta, luego puede responderlo y luego otros lo usarían.
Mehrad

13

En este momento, vimperator reasigna Ctrl + C (de 'copiar' a 'cancelar') y Ctrl + V (de 'pegar' a 'transferir'). En Linux, el método preferido de copiar / pegar es con el botón central del mouse, por lo que esto no es un problema. En Windows, este es un desastre en la interfaz de usuario y necesita ser reparado.

Hay tres lugares desde los que puede copiar: texto de una página web, texto de un campo de formulario y texto de una aplicación externa. Hay dos lugares a los que puede copiar: en un campo de formulario y en una aplicación externa. Las barras de dirección y comando funcionan como campos de formulario.

Copying from...
     A web page: 'Y' works, '^C' doesn't
     Form field: 'Y' doesn't work, '^C' does
     Extern application: 'Y' doesn't work, '^C' does
  Copying to...
     Form field: '^V' doesn't work, '^V,^V' does
     External application: '^V' works, '^V,^V' pastes twice
 Or, seen another way
       Copy  Paste
 Page  Y     N/A
 Form  ^C    ^V,^V
 App   ^C    ^V

Los usuarios comunes no memorizarán esa tabla. Nunca lo resolverán, porque no está documentado explícitamente, y no lo leerían incluso si lo fuera. En su lugar, usarán el menú contextual, lo único que funciona en todas partes. De hecho, unas semanas después de que comencé a usar Vimperator, me sorprendí haciendo exactamente eso, en una aplicación completamente no relacionada, algo que nunca había hecho antes.

Necesitamos restaurar ^ C y ^ V a sus funciones originales y legítimas como copiar y pegar, lo que significa desplazar las teclas de acceso directo ^ C = cancel y ^ V = pass-through. De hecho, ambas teclas de acceso rápido son exclusivas de vimperator y no aparecen en vim. ^ V significa 'bloquear visual' en vim, que no se aplica en vimperator, por lo que la transferencia puede asignarse fácilmente a alguna otra tecla. Sugiero la barra invertida en modo comando y ctrl + barra invertida en los modos comando e inserción. Eso deja ^ C. Creo que debería trasladarse a ^ S. Esto tiene dos buenos mnemónicos: es 'stop', y también es la tecla de acceso rápido de Unix para XOFF, que es inútil pero semánticamente similar. ^ S es actualmente "guardar página como" en vimperator, que rara vez se usa y aún se puede acceder con: save o: saveas.

Deshacer también está roto; era ^ Z, pero ^ Z no es un modo de transferencia y no hay forma de deshacer las ediciones en un campo de formulario sin usar el mouse. No veo ninguna razón para no mover eso a otra tecla de acceso rápido, especialmente porque ^ Z en vim significa suspender, lo que no tiene ninguna relación, e inesperadamente encontrarse en modo de transferencia es extremadamente desorientador. No puedo pensar en una tecla de acceso rápido no arbitrario para cambiar esto, pero ^ Z fue bastante arbitrario en primer lugar, por lo que cualquier tecla de acceso rápido no utilizada servirá.

Soruce: http://www.mozdev.org/pipermail/vimperator/2008-October/002359.html


2

He estado buscando una manera de hacer esto por un tiempo. Buena esa. Pero la solución noremap de user4126 no era perfecta si quería pegar en la línea de comandos o en un cuadro de texto como señala Joe. Así que lo modifiqué con inoremap, y cnoremap también en http://charlieharvey.org.uk/page/vimperator_cut_and_paste . No parece que vnoremap sea compatible.

Por lo tanto, puede pegar en la línea de comandos y en los cuadros de texto utilizando el acceso directo ctrl-v solo una vez. Pegue lo siguiente en su .vimperatorrc y reinicie Firefox.

noremap <C-v> <C-v><C-v>
inoremap <C-v> <C-v><C-v>
cnoremap <C-v> <C-v><C-v>

noremap <C-c> <C-v><C-c>
inoremap <C-c> <C-v><C-c>
cnoremap <C-c> <C-v><C-c>

2

No encontré las respuestas dadas útiles ya que no puedo ver Ctrl+ en cningún lado. Lo que hago es usar el acceso directo SecureCRT. Es decir, para copiar desde la página:

Ctrl+Ins

Para pegar: Ctrl+ Vdos veces (como alguien dice en las respuestas en otra parte).


Gracias buen señor. El mapeo <cc> a <c-ins> resolvió mi sabor particular de este problema.
Steve Vermeulen


1

Para una respuesta corta: ^ V ^ V (es decir, Ctrl-V Ctrl-V)

El primer Ctrl-V "pasa la siguiente pulsación de tecla". El segundo Ctrl-V pega el texto. Esto es lo que hago para la mayoría de los campos de texto.

Si usa el modo vi para campos de texto multilínea (configure noinsertmode), también puede pegar usando p, por lo que si quisiera pegar la URL de otra pestaña en esta etiqueta, puedo ir a esa pestaña, usar y y luego volver a esta pestaña La barra inferior del navegador dirá - TEXTAREA - y puedo presionar p para pegar la URL.


0

Sugeriría usar el

map <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

Porque si ha abierto un editor de texto externo, un simple Cc en la ventana FF finalizará el editor externo y lo perderá todo.

BR

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.