2012-04-07 4 views
5

Con zsh/oh-my-zsh/iterm2, excelente forma de navegar a través del historial de comandos del terminal.tecla arriba-flecha para buscar 2 palabras dadas con zsh shell

Si emite un comando dicen knife cookbook upload application unos días antes y conseguir el comando, que puedo hacer o kkni o knif y pulse la tecla de flecha hacia arriba, que va a iterar a través de la historia de comandos que comienza con la palabra knife.

Pero si los comandos similares se han ejecutado que comienzan con knife, tendré que repetir los comandos usando la tecla de flecha hacia arriba.

Pero si quería buscar más de una palabra, por ejemplo, para obtener comandos con knife node, zsh no es compatible con esto y comienza a mostrar los comandos que comienzan con solo knife.

Entonces, ¿hay alguna manera de obtener los comandos que comienzan con dos palabras? de modo que solo escribo dos palabras y presiono la tecla de flecha hacia arriba para mostrar solo los comandos que comienzan con dos palabras escritas.

Respuesta

2

Además de @Shep respuesta que sugeriría cambiar <C-r> el comportamiento de búsqueda de cadenas sólo sólo de civil a buscar patrones globales:

bindkey "\C-r" history-incremental-pattern-search-backward 

. En este caso, obtendrá el resultado deseado buscando knife*node. Por cierto, si lo hizo knife node<Up>, zsh debe buscar comandos que comienzan con knife node, no solo con knife. Pero no buscará los comandos que contienen knife y node separados por otras palabras, y no buscará los comandos que contengan knife node que no estén al inicio de la línea (hablando del widget history-beginning-search-backward).

+0

buscando exactamente lo que dijiste. cuando escribo 'knife node ' quiero solo esos comandos que comiencen con 'knife node'. Pero aunque escribo 'knife node ', todavía muestra todos los comandos que comienzan con 'knife'. – Autodidact

+0

@Millisami Debe asegurarse de que '' esté vinculado al widget 'history-beginning-search-backward' porque nunca vi un comportamiento diferente. Pero estoy usando zsh desde la versión 4.3.10 o 4.3.9 AFAIR, si tiene una anterior, tal vez algo cambió. Veo en 'man zshzle' hay un widget' history-search-backward' mapeado por defecto a ' N' y' n', tiene el mismo comportamiento que usted describe. Intenta buscar en tu zshrc la línea que contiene este nombre de widget y reemplázalo con 'history-beginning-search-backward' (y haz la acción similar para' history-search-forward' para que sea coherente). – ZyX

+0

Por cierto, no estoy diciendo que este widget esté vinculado por defecto. Pero no veo el widget * any * vinculado a la clave '' de forma predeterminada, por lo que debe ser una asignación. AFAIK Mac OS (iterm2 = Mac OS X, ¿estoy en lo cierto?) Tiene algunos valores predeterminados para zsh en/etc (en Gentoo los tengo en '/ etc/zsh/zprofile', pero no hay enlaces y no se requieren valores predeterminados para que zsh funcione correctamente), o puede estar enlazado por archivos oh-my-zsh, también puede buscar en estas ubicaciones, pero es mejor agregar un enlace a su zshrc. – ZyX

1

Tal vez no sea exactamente lo que está buscando, pero al escribir C-r se abrirá una búsqueda de comandos hacia atrás, que buscará cualquier cadena que ingrese, comenzando con la más reciente. Para obtener la segunda más reciente, presione control-r nuevamente (y así sucesivamente).

También vea un related thread en superusuario.

+0

@Shef, bueno, sé que la búsqueda inversa. Pero no es exactamente lo que estoy buscando. Gracias. – Autodidact

Cuestiones relacionadas