我想知道是否可以操作输入为命令的字符数。原因是,我正在编写一个自定义函数来完成命令(当你按TAB时),但我只使用完整的功能来提示用户,而不是完成。我想要做的就是完成一个打字的词:
User$ command param[TAB]
prefixparam aaaparambbb
User$ command param
User$ command aparam[TAB]
User$ command aaaparambbb
由于我正在完成param作为前缀和后缀(在某些情况下完全替换它),我无法使用内置complete
功能,而是我正在寻找一种解决方法(希望如此)没有太深入。)
我当前的功能如何运作
当您按Tab键时,它将解析命令并确定可能的完成。然后它将再次键入bash提示符($ PS1)和已经输入的命令部分。 (User$ command param)
我想要它,这样当只有一个可能的选项时,它可以用剩下的唯一选项替换你的部分命令。这已经是可能的,因为我手动重新命名用户,但是我遇到了问题,因为shell不会允许你退回比你最初输入更多的空间。
User$ command aparam[TAB]
User$ command aaapa[rambbb] // Can only backspace 6 characters
我需要一些方法来欺骗shell认为所有11个字符都被输入并且可以被删除。
=============================================== ========================== 对于任何感兴趣的人bash expand cd with shortcuts like zsh
,我已经找到了几乎想要使用bind
的内容
您可以修改$READLINE_LINE
和$READLINE_POINT
变量来修改命令。但是,这仅适用于绑定命令,绑定到TAB
会覆盖并破坏其他自动完成功能,而我不愿意这样做。