2

readline モジュールを使用してオートコンプリート機能を提供する cmd モジュールを使用して、Python で CLI を作成しています。オートコンプリートは同じ行にさまざまなオプションを表示しますが、それらを別の行に表示したいのですが、それを可能にするパラメーターが cmd に見つかりません。

これはプログラムの例です:

import cmd

class mycmd(cmd.Cmd):
    def __init__(self):
        cmd.Cmd.__init__(self)

    def do_quit(self, s):
        return True

    def do_add(self, s):
        pass

    def do_addition(self, s):
        pass

    def complete_add(self, text, line, begidx, endidx):
        params = ['asd', 'asdasd', 'lol']
        return [s for s in params if s.startswith(text)]

if __name__ == '__main__':
    mycmd().cmdloop()

これが結果です。

(Cmd) <tab> <tab>
add       addition  help      quit   <-- I want these on different lines
(Cmd) add<tab> <tab>
add       addition                   <-- 
(Cmd) add <tab> <tab>
asd     asdasd  lol                  <-- 
(Cmd) add asd<tab> <tab>
asd     asdasd                       <-- 

各オートコンプリート オプションの最後に行区切りを追加すると、次のようになります。

(Cmd) add <tab> <tab>
asd^J     asdasd^J  lol^J    

とにかく、これはコマンドのオートコンプリートを解決せず、パラメーターのみを解決します。

助言がありますか?

助けてくれてありがとう!

4

1 に答える 1