我在我的设置自动完成.bashrc
如下:
complete -W "$(echo `cat ~/.ssh_complete`;)" scp
但这只使用了文件中给出的词~/.ssh_complete
。如何扩展定义,使制表符补全scp
也使用本地目录中的文件名。
一个简单的解决方案可以解决我的问题(文件名和单词列表中的单词),我不需要制表符完成来识别实际scp
命令的格式/细节。再次:我希望制表符完成显示当前目录中文件的名称并显示文件中给出的条目 ~/.ssh_complete
。
当有新的建议时,我编辑文件.bashrc
,获取它,然后再次尝试使用制表符补全scp
。
如文档所述,您可以将两者结合起来:
Where
<comp-options>
允许您指定您想要的行为类型。我摆脱了荒谬的 UUoC 并为你回声。
好的,如果你写一个函数如下
然后
-F to complete 表示运行指示的函数 (_scp_complete) 然后使用数组 COMPREPLY 将每个元素作为一个完成
在函数中,我将 COMPREPLY 重置为空白然后我找出 ~.ssh_complete(每行成为 COMPREPLY 的一个元素)然后添加 ls 的输出。