如何为Bash设置自定义按键触发的文件目录自动补全
自定义Bash文件/文件夹简易补全按键
步骤1:编写自定义补全函数
创建仅针对文件和文件夹的补全函数,利用compgen -f生成匹配项,同时处理命令行内容与光标位置:
simple_file_complete() { local line="${READLINE_LINE}" local point="${READLINE_POINT}" local prefix="${line:0:point}" local completions=$(compgen -f -- "${prefix}") if [[ -n "${completions}" ]]; then local first_completion=$(echo "${completions}" | head -n1) if [[ "${completions}" == "${first_completion}" ]]; then # 仅单个匹配项,直接替换当前前缀 READLINE_LINE="${first_completion}${line:point}" READLINE_POINT="${#first_completion}" else # 多个匹配项,先列出所有结果,再恢复当前输入 echo -e "\n${completions}" echo -n "${PS1}${line}" READLINE_POINT="${point}" fi fi }
步骤2:绑定按键到函数
将你指定的按键(这里用反引号)绑定到上述函数,通过bind -x`实现按键触发:
bind -x '"\`":simple_file_complete'
步骤3:让设置永久生效
把上述函数和绑定命令添加到~/.bashrc文件末尾,执行以下命令使更改立即生效:
source ~/.bashrc
额外说明
- 如果需要更换触发按键,比如换成F12,只需修改绑定命令为:
bind -x '"\e[24~":simple_file_complete' - 若希望更贴近默认补全的多选交互,可调整函数逻辑,比如用
select让用户手动选择匹配项
内容的提问来源于stack exchange,提问作者Svalorzen
相关产品推荐
相关产品推荐

