也许 ~/.inputrc 文件将这些键映射到奇怪的东西?或者你没有完全理解搜索历史是如何工作的。
让我们重新开始:使用 bindkey 重新映射这些键:
bindkey -M vicmd "?" history-incremental-search-backward
bindkey -M vicmd "/" history-incremental-search-forward
现在,当您按“esc”(用于 vi 普通模式)和“?”时 你会得到一个 bck-i-search 命令:
%user@hostname: vim /etx/apache2/sites-enabled/defaul[t]
bck-i-search:
此时,您键入要搜索的内容,例如“etx”。并且,光标移动到该行中的那个位置。注意:如果在当前行中没有找到该模式,它会继续搜索您的历史记录。这种行为被认为是一种特征!
您可能会注意到您不能重复搜索(例如在 vim 中按“N”)。在这种情况下,添加一些 isearch 绑定:
bindkey -M isearch '^N' history-incremental-search-backward
bindkey -M isearch '^R' history-incremental-search-forward
现在,按 control-N 重复您的搜索,而按 control-S 反转重复搜索的方向(注意:此键绑定的默认顺序是从向前到向后颠倒,因为人们更经常从历史的末尾向后看)。
简而言之:将当前行视为历史的“顶部”。使用 vicmd '/' 或 '?' 搜索整个历史。这 '?' 自上而下搜索,而“/”从光标当前位于历史记录中的任何位置向“顶部”搜索。另一种思考方式是将您的历史记录想象成一个大文件,您所在的当前行位于该文件的底部。如果这有助于你理解它,你可能会感觉到'?比'/'更相关。