Meta- * / "insert-completions"가 "complete -F…"를 통해 정의 된 완료에 실패


0

한 가지 예외로 원하는 것을 수행하는 간단한 완료 함수를 작성했습니다. 파일 완성 방식과 같이 M-* ( "삽입 완료")를 입력해도 완성이 확장되지 않습니다.

이것이 본질적인 제한입니까, 아니면 가능합니까?

방금 다른 컴퓨터 (BASH 버전이 약간 다른)에서 이것을 시도했지만 거기에서 작동했습니다.

  • 작동 : 3.2.25 (1)-릴리스 (Linux, CentOS 5.5)
  • 노고 : 3.2.48 (1) 릴리스 (MacOS X 10.6.7)

업데이트 :이 두 시스템의 불일치를 설명 할 수있는 가설을 찾고 있습니다.

답변:


0

이 웹 페이지에서 다음 코드 를 내 웹에 추가했습니다 .bash_profile.

_foo() 
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--help --verbose --version"

    if [[ ${cur} == -* ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
complete -F _foo foo

foo --Terminal.app를 foo --help --verbose --version누르면 확장됩니다 Meta-*.

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.

따라서 bashMac OS X 10.6.7 에서 동일한 버전으로 재생할 수 없습니다 . Macports / Fink / Homebrew를 통해 타사 유닉스 제품 설치와 같이 설치 후 환경을 변경 했습니까? 새 사용자 계정을 만들어 새로운 터미널 구성을 사용해보십시오.

실제로 눌러야 Meta합니다. 터미널에서 구성 할 수 있습니다. 이 옵션을 설정하지 않으면 다음이 없습니다 Meta.

여기에 이미지 설명을 입력하십시오

직장 Meta에서 다른 지름길이 readline있습니까?


이것이 작동하지 않는 경우 : 10.7.0 이후 Lion은 아직 상용화되지 않았으므로 시험판 소프트웨어에 버그가있을 것으로 예상하고 적절한 사이트에 보고 할 것을 제안합니다 .


예, 다른 메타 워크. 스노우 레오파드입니다. 바로 "uname -a"가 생성하는 것입니다.
랜달 슐츠

@Randall 귀하의 질문에, 당신은 10.7.0을 사용한다고 썼습니다. 이것은 10 월 7.0 일에 발표되지 않은 "사자"입니다. 키 Option가 아닌 경우 무엇을 누르 Meta나요? Esc순서 를 사용해야합니다 . 즉, 먼저 (누르지 Esc않음)을 누른 다음 *나중에 누릅니다 . 또한 나를 위해 작동합니다.
Daniel Beck

내가 말할 수있는 것은 Snow Leopoard 10.6.7을 실행 중이고 "uname -a"를 실행하면 커널이 "Darwin Kernel Version 10.7.0"이라는 것입니다. 시험판 시스템이 아닙니다. 내가 말했듯이 메타 옵션 사용은 구성한대로 파일 시스템 기반 완료를위한 삽입 완료를 트리거합니다.
랜달 슐츠

@Randall이 경우 완성 기능에 문제가있는 것 같습니다. 난 그냥 내 넣어 .bash_profile. 내가 제공 한 코드를 사용하여 시도하고 작동하는지 확인하십시오.
Daniel Beck

@Randall Darwin은 Mac OS X와 ​​다른 버전 관리 체계를 따릅니다. Mac OS X이 부 버전 (10.5-> 10.6)을 얻을 때마다 Darwin은 주 버전 (9.x-> 10.x)을 얻습니다. 올바른 Mac OS X 버전을 언급하도록 게시물을 편집하십시오.
Daniel Beck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.