2012-03-29 16 views
5

Estoy usando c-support en Vim. Una de sus características es el comment expansion automático.Deshabilitar temporalmente el complemento vim sin relanzar

Cuando estoy pegando código en Vim desde un editor externo, los comentarios se expanden (lo que me da doble comentario y daña la pasta, ver abajo, por ejemplo). Me gustaría poder desactivar el complemento, pegarlo y luego volver a habilitarlo, sin relanzar Vim. No estoy seguro si esto es posible.

El SO preguntas here, here y here todo describe métodos para deshabilitar los plugins, pero todos ellos me requieren para cerrar Vim, lío con mi .vimrc o similares, y relanzar; si tengo que cerrar Vim, también podría cat file1 >> myfile; vim myfile, luego cambiar las líneas internamente, lo cual será igual de rápido.

¿Es posible desactivar un plugin durante la ejecución de vim sin el relanzamiento, preferiblemente en una forma que me permite asignar una tecla de acceso directo toggle-plugin (por lo que re-abastecimiento ~/.vimrc está bien, eso es asignable a una tecla de acceso directo [Imagino, refugio 't probado todavía])?


mal estado comentarios:


/* 
* * Authors: 
* * A Name 
* * 
*  * Copyright: 
*  * A Name, 2012 
*  */ 

EDIT:. Resulta que pueda :set paste, :set nopaste (que, en palabras de :help paste, será "evitar efectos inesperados [mientras que pegar]" (Ver los comentarios).
Sin embargo, todavía tengo curiosidad acerca de si puede deshabilitar/habilitar un complemento según la pregunta original, así que dejaré la pregunta abierta.

+2

¿Intentó ': establecer pegar' * antes de pegar * y': establecer nopaste' * después de pegar *? – romainl

+0

No. No sabía que existía, eso ayuda mucho. :) – simont

Respuesta

1

No hay una forma general de hacerlo sin modificar la fuente del complemento. Algunos complementos (como todos los míos) pueden agregar esta característica (tengo la función "descargar" en mi marco, pero la uso principalmente para actualizar sin reiniciar vim, no para desactivar temporalmente algo). Lo que definitivamente puede hacer es agregar una llamada de función a cada archivo de complemento fuente que salvará el estado vim actual y también algo que hará esto después de cargar el complemento (debido a la existencia de finish, throw, try | <code with some error> no puede simplemente agregar esto función al final del complemento), probablemente en los eventos VimEnter, FileType y Syntax. A continuación, es necesario tener una función que va a revertir los cambios realizados al plugin y una definición s:Execute función en cada plugin, así:

function s:Execute_I_do_not_expect_function_with_this_suffix_to_be_defined_by_the_plugin_so_I_add_it_to_avoid_name_collisions(s) 
    execute a:s 
endfunction 

. Esto es necesario para ejecutar una línea de código en el contexto del script de origen.Por “estado” que necesita ser salvado quiero decir

  1. Asignaciones
  2. Comandos
  3. signos
  4. Funciones
  5. Menús
  6. Eventos (autocommands)
  7. Sintaxis (probabilidades de estar vacía antes de ejecutar el complemento)
  8. Opciones
  9. Algunas vim, todas las variables globales, de búfer, de pestaña y de ventana
  10. // Variables locales de script. Aunque aquí es simple: al inicio del script, el alcance local está vacío y todo lo que necesita es vaciarlo cuando lo deshabilite.

Para cada elemento, es posible revertir los cambios realizados mediante el complemento, pero no es tan fácil de codificar. Y la presencia del argumento <script> para mapeos no se distingue con la presencia de nore, aunque tienen un comportamiento diferente.

Si desea escribirlo, no se olvide de que si el script tiene recursos, su código será relanzado.

Además, tenga en cuenta el evento SourcePre. Ayudará con la adición automática de sus líneas a todos los complementos.

No se olvide que hay más lugares que se pueden modificar y no se puede guardar y restaurar fácilmente o en absoluto: sistema de archivos, el estado intérpretes, tampones de plugins abiertos, etc.

5

Insertar ": juego de pasta" luego pega tu código Después de esa inserción: set unpaste

+2

nopaste en lugar de unpaste – gayavat

Cuestiones relacionadas