2009-10-13 12 views
10

Utilizo vim (En realidad gvim en Windows) como mi editor de texto principal. En mi flujo de trabajo tengo que copiar oraciones a/desde varias fuentes externas, por lo tanto, uso el portapapeles = sin nombre para guardar los trazos de tecla (p en lugar de "* p).
Copio el texto de una fuente externa y quiero pegar sobre dos diferentes lugares en vim. Marco el primero (v) y luego uso p para pegarlo. El problema es que en este punto pierdo el buffer original y no puedo pegarlo en el segundo lugar. No existe en el búfer sin nombre, el búfer * o los búferes numerados. Mi suposición es que pegar sobre la selección está poniendo el texto "pegado" en el búfer sin nombre.
¿Cómo puedo pegar mi cadena original en dos ubicaciones? es decir, evitar que se pierda de los buffers.Copiar y pegar de fuente externa

Gracias

+0

shift + insert (en modo inserción) – nilon

Respuesta

6

Prueba esto:

:vmap p "_xP 
  • vmap significa hacer un mapeo que sólo se aplica en el modo visual.
  • p es la clave para crear la asignación.
  • "_ es el registro de agujero negro. Esto se usa en cualquier situación en la que desee eliminar texto sin afectar a ningún registro.
  • xP significa eliminar el texto seleccionado, luego pegar antes de la posición del cursor resultante.
0

No sé cómo hacer eso en Windows. Con KDE, el portapapeles tiene un historial del que puede seleccionar, para que pueda pegar, seleccionar la selección anterior del portapapeles y pegar en la nueva ubicación.

Dicho esto, parece que podría tener más sentido para usted tenerlo en una sola ubicación, luego escriba una secuencia de comandos para tomar esa entrada y crear la salida que necesita. ¿Puedes elaborar más sobre lo que estás tratando de lograr?

+0

Estoy tratando de copiar una línea de una aplicación diferente y pegarla en dos lugares en vim. Tan simple como se pone. – Mosh

+0

Esa es la mecánica de eso, sí. Le pregunto si debe dar un paso atrás y pensar en la tarea que está tratando de lograr: ¿hay un mejor enfoque que no implique cortar y pegar repetidamente? – retracile

+0

Estoy perdido. Hay una pieza de texto que necesito pegar en dos lugares diferentes, ¿alguna idea? – Mosh

1

Se podría establecer un mapeo para aliviar su dolor:

:vmap <F5> "zxP 

Esto eliminará el texto seleccionado visualmente, pero lo puso en un registro diferente, por lo que el portapapeles no se ve afectada. Cambie <F5> a lo que sea más fácil para usted.

0

Compruebe el valor de las opciones 'guioptions'. Asegúrese de que la bandera 'a' no esté configurada. Además, verifique que la opción 'Portapapeles' y verifique que ni los indicadores 'sin nombre' o 'autoselección' estén configurados.

:set go-=a 
:set clipboard-=unnamed 
+0

Gracias por su respuesta, pero parece que no puedo implementarlo correctamente. De nuevo, mi secuencia de trabajo es copiar en un programa externo, marcar el texto que se va a reemplazar en Vim pegar sobre él. Marca otro pedazo de texto en Vim y luego no puedo pegar el texto copiado. Intenté pegar con "+ p", pero obtuve los mismos resultados. ¿Recibí tu respuesta incorrecta? (Uso el portapapeles = sin nombre). – Mosh

+0

Así que instalé Vim en mi computadora portátil y verifiqué mi primera respuesta, no funciona. Edité mi respuesta con una nueva sugerencia. Supongo que es la presencia de la bandera 'sin nombre' lo que le ocasionó problemas. –

1

No sé si usted entiende mal pero traté de lo que está haciendo y no tengo ningún problema en hacer eso con el + drop-registro.

Mi flujo de trabajo:

  1. copiar una oración en una aplicación externa (es decir navegador.)
  2. visual seleccione una sentencia en vim y lo reemplazó con "+ p o p (con el portapapeles = conjunto sin nombre)
  3. seleccionar visualmente otra frase y sustituirla por "+ p

Lamentablemente, al pegar la segunda vez, debe pegar de forma explícita desde el registro +. Por tanto, yo recomendaría una asignación para p/p en lugar de utilizar el portapapeles = sin nombre

nmap p "+p 

Trate de usar

:registers 

para ver los contenidos de los diferentes registros.

+0

Gracias por su respuesta. Estoy trabajando en una máquina con Windows, así que cuando reviso los registros: No tengo el registro +. Además, ningún registro contiene el texto que copié de la aplicación externa (ni siquiera el * registro, que se sobrescribe con el texto que copié). – Mosh

Cuestiones relacionadas