You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在bashrc中编写自动补全函数补全历史中的单个单词

实现Bash历史记录单单词自动补全的方法

步骤1:编写自定义补全函数

在~/.bashrc中添加以下函数,它会从命令历史里提取所有曾作为参数使用过的单词,去重后生成补全候选:

_history_word_complete() {
    # 提取历史命令中所有非命令本身的单词(从第2个字段开始),去重并过滤空行
    local history_words=$(history | awk '{for(i=2; i<=NF; i++) print $i}' | sort -u | grep -v '^$')
    # 根据当前输入的前缀生成匹配的补全列表
    COMPREPLY=($(compgen -W "$history_words" -- "${COMP_WORDS[COMP_CWORD]}"))
}

步骤2:绑定触发快捷键

在~/.bashrc中添加快捷键绑定,这里选择绑定到Alt+/(避免和默认Tab补全冲突):

bind -x '"\e/": _history_word_complete'

步骤3:生效配置

执行以下命令让配置立即生效,或者重新打开终端:

source ~/.bashrc

测试效果

  1. 先执行两个测试命令:
less firstFile.txt
gvim secondFile.txt
  1. 输入cat firs,然后按下Alt+/,就会自动补全为cat firstFile.txt。

注意事项

  • 确保Bash的历史记录足够多:可以检查~/.bashrc中的HISTSIZE和HISTFILESIZE参数,建议设置为较大的值(比如HISTSIZE=10000),避免历史记录被截断。
  • 如果需要补全包括命令本身的所有单词,只需把awk的循环起始i=2改成i=1即可。

内容的提问来源于stack exchange,提问作者Sidharth C. Nadhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 10:45:03