2010-02-04 20 views
19

¿Hay alguna manera fácil de guardar un patrón Regex de uso común para poder reutilizarlo entre diferentes archivos? Miro a través de muchos archivos de registro y siempre necesito crear una expresión regular levemente compleja (no es ciencia espacial pero me cuesta volver a escribirla) para encontrar errores, así que sería bueno tener una manera de recordar eso sin tener que guardarlo en un texto archívelo y péguelo en los parámetros de búsqueda cada vez.¿Guarda los patrones de expresiones regulares usados ​​comúnmente en Vim?

Respuesta

2

Simplemente presione / y luego flecha arriba.

O cree comandos para invocar la búsqueda de expresiones regulares.

:command -nargs=0 Errors vimgrep "Error\s*regexp" % | cw 15 

y luego simplemente

:Errors 
+0

Vine aquí buscando una forma de recordar los patrones de búsqueda anteriores. A veces busco repetidamente un patrón dado, interrumpido por una búsqueda de un patrón diferente, y tener que volver a escribir el patrón original es molesto. No sabía que podías acceder al historial con la flecha hacia arriba y hacia abajo. (Ctrl-P y Ctrl-N también funcionan) ¡Gracias! –

2

Si has empezado a escribir un comando en vim, incluyendo una búsqueda o una sustitución, al pulsar 'arriba' se debe buscar en el historial de los comandos usados ​​recientemente con el mismo prefijo.

3

Hay un par de maneras:

  • crear una asignación que hace lo que quiere y agregarlo a su .vimrc, por ejemplo: map /foo /[long complicated regex]. Pero tenga en cuenta que esto dificultará la búsqueda de la cadena literal "foo", aunque se puede hacer con Ctrl-V escapes. Otra forma es usar algún otro prefijo para sus búsquedas de expresiones regulares personalizadas, p. Ej. map ::foo /[complicated regex].
  • Cree una función que realice la búsqueda de expresiones regulares que desee y agréguela a su .vimrc.
  • alguna combinación de los anteriores
14

Put:

source ~/.regexlist.vim 

en su vimrc.

Haga la búsqueda. Decida si desea usar esa otra vez. Escribe esto literalmente:

:sp ~/.regexlist.vim<CR> 
olet MyRegExName = '<C-R>/'<ESC> 
:w<CR> 
:so %<CR> 
:q<CR> 

Dónde <C-R> es CtrlR, <CR> es ENTER y <ESC> es ESC.

La próxima vez que desee utilizarlo:

/<C-R>=MyRegExName<CR><CR> 

Ctrl-R es su amigo! Ctrl-R seguido por/detiene la última búsqueda. Ctrl-R seguido de = le permite ingresar una expresión.

0

Cree un archivo donde vaya a almacenar sus patrones regex y manténgalo abierto en una pestaña o ventana separada mientras mira a través de sus archivos de registro.

Para añadir un patrón de búsqueda que acaba de utilizar para su archivo, escriba literalmente:

o<CTRL-R>/ 

Cuando es necesario utilizar un patrón de su lista, mover a esa línea y escriba literalmente:

yyq/p<CR> 

Puede cambiar las pestañas/ventanas y luego presionar n o N para buscar.

Cuestiones relacionadas