小编Ase*_*rre的帖子

修改 bash 脚本中的 $READLINE_LINE 和 $READLINE_POINT 值

我已经在 stackoveflow 上问过这个问题,但没有得到答案,而且意见很少。我想我会在这里发帖,因为应该有更多的 bash 用户,而且有人可能已经偶然发现了这个问题。根据SO Meta,只要我链接到跨网站帖子,就可以这样做。如果我错了,请告诉我,我会删除这个问题。


我试图通过将自定义脚本绑定到一个键来实现ksh路径自动完成的一些功能bash。为了做到这一点,我的脚本读取来自信息bind变量$READLINE_LINE,并$READLINE_POINT和尝试更新这些值。虽然我可以毫无问题地读取行缓冲区,但我似乎无法修改这些变量并更新当前行。

引用绑定手册页,这应该可以工作:

当 shell-command 被执行时,shell 将 READLINE_LINE 变量设置为 readline 行缓冲区的内容,并将 READLINE_POINT 变量设置为插入点的当前位置。如果执行的命令改变了 READLINE_LINE 或 READLINE_POINT 的值,这些新值将反映在编辑状态

我绑定了我的 sciptbind -x '"\t":autocomplete.sh'并做了这样的事情:

#!/bin/bash
#autocomplete.sh
echo $READLINE_LINE $READLINE_POINT   #I can read the current line values
EXPANSION=($(magical_autocomplete $READLINE_LINE))
#we store the desired value for the line in ${EXPANSION[0]}
[[ ${#EXPANSION[@]} -gt 1 ]] && echo ${EXPANSION[@]:1} #we echo the match if there are …
Run Code Online (Sandbox Code Playgroud)

bash autocomplete

6
推荐指数
1
解决办法
870
查看次数

标签 统计

autocomplete ×1

bash ×1