2009-09-06 21 views
7

Remapeé [[ y ]] para encontrar el patrón anterior y el siguiente en el archivo. Las asignaciones son las siguientes:VIM Restaurar el último patrón de búsqueda

nmap [[ ?^.section <CR> 
nmap ]] /?section /<CR> 

El problema es que cuando se utiliza cualquiera de ellos, "suelto" del actual patrón de búsqueda, por lo que cuando se hace n para el próximo partido, busco la "sección" próximo .

¿Hay alguna manera de restaurar el patrón de búsqueda o las asignaciones [[ y ]] para que no afecte el patrón de búsqueda actual?

Respuesta

14

Probablemente pueda hacerlo manualmente guardando y restaurando el registro "/. Sin embargo, una mejor manera es simplemente mover su código a una función; regresar de una función la restaura automáticamente.Para citar la documentación VIM:

                                                                                                                                                                                                                                                      * Función de búsqueda-undo *
La última utilización de patrón de búsqueda y rehacer el comando "" no será modificado por la función. Esto también implica que el efecto de |: nohlsearch | se deshace cuando la función retorna.

Esto sería algo como esto en su .vimrc:

function! Ayman_NextSection 
    /?section/
endfunction 
nmap ]] call Ayman_NextSection()<CR> 

Espero que ayude.

+0

Dependiendo de lo que esté tratando de hacer, 'histdel()' podría ser útil también. Esto borra automáticamente su búsqueda actual, pero no elimina la búsqueda del historial de búsqueda (se accede con 'q /') –

Cuestiones relacionadas