如何在bash终端中实现CTRL-R(反向搜索)?
反向搜索示例:
(reverse-i-search)`grep': git log | grep master 用于查找建议的算法是什么? 非常感谢指向其源代码的指针. 解决方法
反向搜索是
GNU Readline Library的一部分.Readline库有助于阅读线和编辑设施.整个源代码可以在
here找到.
搜索空间的来源 以下源代码片段显示了如何确定历史记录的源文件: /* Return the string that should be used in the place of this filename. This only matters when you dont specify the filename to read_history (),or write_history (). */ static char * history_filename (filename) const char *filename; { char *return_val; const char *home; int home_len; return_val = filename ? savestring (filename) : (char *)NULL; if (return_val) return (return_val); home = sh_get_env_value ("HOME"); #if defined (_WIN32) if (home == 0) home = sh_get_env_value ("APPDATA"); #endif if (home == 0) return (NULL); else home_len = strlen (home); return_val = (char *)xmalloc (2 + home_len + 8); /* strlen(".history") == 8 */ strcpy (return_val,home); return_val[home_len] = '/'; #if defined (__MSDOS__) strcpy (return_val + home_len + 1,"_history"); #else strcpy (return_val + home_len + 1,".history"); #endif return (return_val); } > savedtring()在savestring.c中定义,如果已定义,则只复制字符串文件名. 资料来源:histfile.c 如何存储历史记录 >可搜索的历史记录存储在 算法 使用 简短的摘要 : 如果没有找到字符串,则响铃.否则,它会显示字符串,但实际上并未在历史列表中移动,直到用户接受该位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |