2010-11-24 13 views
25

Cuando estoy escribiendo documentos, me encuentro con una convención de orginización apropiada para ese documento, y me gustaría que la sintaxis resalte esa convención. Pero hacer un ftplugin es demasiado "global", quiero que el color de la sintaxis venga con el documento, así que si lo envío a algún lugar sin ese complemento, aún así pueden obtener el color. Descubrí que no puedes hacerlo a través de la línea de modo porque eso solo acepta opciones.Vim: cómo ejecutar el texto seleccionado como comandos vim

Ahora estoy tratando de averiguar si hay una manera de seleccionar texto en el modo visual (o lo que sea, pero uso el modo de línea visual para todo, así que sería bueno) y lo he ejecutado como una serie de vim comandos.

Por ejemplo, en el fondo de un documento que tengo:

vim highlighting: 
    syn match Comment "^>.*$" 

¿Cómo puedo seleccionar el texto y decir "boom, ejecutarlo" en lugar de tener que volver a escribirlo?

+0

Gran pregunta: siempre he deseado poder habilitar modelos extendidos para varias cosas, como coincidencias personalizadas o cosas similares. Solía ​​escribir ftplugins temporales para eso. – progo

Respuesta

37

Se pueden seleccionar las líneas, tirar de la selección y ejecutarlo con

:@" 
+1

También vea [http://stackoverflow.com/questions/3997078/how-do-you-paste-text-into-a-vim-colon-command/3997110#3997110] (esta respuesta) para obtener más información sobre cómo use registers – Benoit

+3

Esto funciona con cualquier registro, por cierto. Puedes hacer un '' ayy' para tirar toda tu línea a a, luego usar '@ a' para ejecutarlo. Ten en cuenta que vas a obtener un montón de espacios si ejecutas una línea sangrante, lo que podría arruinar las cosas (lo moverá en modo normal). Sería mejor seleccionar el comando con el modo visual 'v'. – naught101

+2

Tengo' nnoremap 2: @ "' y lo uso mucho. (mnemónico es Shift-2 = @ = Ejecutar). –

1

he definido a few mappings basado en lh-vim-lib que no implican ningún registro. Esto es de hecho una solución exagerada, pero limpia para mapeos, ya que nunca modificará el registro predeterminado.

2

me gusta hacer esta asignación que requerirá realizar una selección visual primero y no sobrescribe el registro de su nombre:

vmap <space> "xy:@x<CR> 

Si te gusta escribir comandos con vim continuaciones de línea:

vmap <space> :w! /tmp/x.vim<CR>:so /tmp/x.vim<CR> 
Cuestiones relacionadas