2016-06-23 2 views
0

파이썬에서 cmd 라이브러리를 사용하여 작은 REPL을 작성하려고합니다. 그것이 제공하는 기능 중 하나는 자동 탭 완료입니다.설정 completekey = None은 위쪽 화살표 기능을 제거합니다.

다행히도 "completkey가 None이 아니고 readline을 사용할 수 있으면 명령 완료가 자동으로 완료됩니다." 그래서 cmd.Cmd 하위 클래스를 인스턴스화했을 때 completekey=None을 설정했습니다.

그러나 cmd 모듈의 주요 기능인 위쪽 화살표 기록을 지원하는 readline의 사용도 비활성화되어 이제는 ^[[A으로 돌아 왔습니다.

왜 이런 일이 발생하고 해결책이 있습니까?

+0

그것은 https://hg.python.org/cpython/file/3.5/Lib/ 발생 가능성 'cmd.Cmd'를 서브 클래스 화하여'cmdloop' 또는'complete' 메소드를 오버라이드 (override) 할 수 있습니다. – Evert

답변

2

의 값이 None이 아닌 경우에만 readline 모듈을 가져옵니다. readline을 사용하고 완료를 사용하지 않는 유일한 방법은 아무것도하지 않는 완성자를 지정하는 것입니다. completekey가 = None` 상기 'readline` 모듈이로드 될 때 결코'(([소스]을 참조하기 때문에

class CmdSubclass(Cmd): 
    # Other configuration 
    # ... 

    def complete(self, *args): 
     pass 
+0

니스, 고마워요 ... 받아 들이고 있습니다 – Maltysen

+0

이것은 원시 탭을 입력하지 못하게합니다. 하지만 나는 그걸로 살 수있을 것 같아. – Maltysen

+0

'completekey'를 자주 사용하지 않아도되는 다른 것으로 설정할 수도 있습니다. – chepner

관련 문제