Recorre las coincidencias en ZSH history-incremental-pattern-search-backward

10

Recientemente cambié la búsqueda del historial para usarla, history-incremental-pattern-search-backwardya que permite patrones en la búsqueda. Así es como está configurado en mi.zshrc

bindkey -M vicmd '/' history-incremental-pattern-search-backward

Esto funciona muy bien, pero no puedo entender cómo ir a la siguiente coincidencia desde el menú de búsqueda.

% cat foobarbaz.txt
bck-i-search: f*baz

¿Hay una clave destinada a hacer esto?

Claytron
fuente

Respuestas:

12

Finalmente encontré el conjuro correcto. Debe asignar la búsqueda de patrones en modo de inserción. Esta fue la pieza que me faltaba:

# Search backwards and forwards with a pattern
bindkey -M vicmd '/' history-incremental-pattern-search-backward
bindkey -M vicmd '?' history-incremental-pattern-search-forward

# set up for insert mode too
bindkey -M viins '^R' history-incremental-pattern-search-backward
bindkey -M viins '^F' history-incremental-pattern-search-forward

Habría usado la ^Bbúsqueda hacia atrás en el modo de inserción, pero tengo eso asignado a otra cosa. Así que ahora ^Ry ^Frecorra los partidos.

Claytron
fuente
¿Qué hace el -Mcomando? En mi caso, incluso sin la -Mpalabra clave, esto funciona muy bien ..
alpha_989
La -M keymaptecla indica a bindkey a qué mapa de teclas aplicar el enlace. Lo configuré para el modo de inserción y el modo de comando.
claytron
Gracias por la aclaración. En mi caso solo tengo bindkey '^R' history-incremental-pattern-search-backward, y funciona. También uso el /comando predeterminado en vi modelo normal en zsh. En eso puedo buscar en el historial de comandos, y una vez que encuentre el comando, solo lo proporcionará en la línea de comando. Entonces puedo modificar el último comando si es necesario.
alpha_989
Si uso '^R' history-incremental-pattern-search-backward, por otro lado, solo me llevará al último comando que coincida con la cadena de búsqueda. Sin embargo, no he encontrado una manera de poder editar el comando. Después de encontrar un comando adecuado que coincida con la cadena de búsqueda mediante la búsqueda de patrones incrementales, ¿hay alguna combinación de teclas específica que pueda presionar para poder editar el comando?
alpha_989
8

De acuerdo con la zshzlepágina del manual para zsh 4.3.10, ninguna clave está vinculada de forma predeterminada. Debe agregar enlaces al isearchmapa, y solo unos pocos widgets están disponibles. Por ejemplo, puedes hacer:

bindkey -M isearch '^R' history-incremental-search-backward
bindkey -M isearch '^S' history-incremental-search-forward
Gilles 'SO- deja de ser malvado'
fuente
bindkey -lno muestra un isearchmapeo
claytron
@claytron: debe ser un problema de versión: isearches nuevo en 4.3.10, mientras que history-incremental-pattern-search-backwardapareció en 4.3.7 (si leo el registro de cambios correctamente).
Gilles 'SO- deja de ser malvado'
Estoy usando 4.3.10, no estoy seguro de por qué no está allí. Sin embargo, usar los enlaces del modo de inserción funcionó para mí.
claytron