zsh expand-or-complete para todos os arquivos, independentemente do comando / contexto

2

O zsh tem um recurso no qual a conclusão da tabulação da linha de comando realiza conclusões com reconhecimento de contexto, para que você possa fazer coisas como:

# Good:

$ wget g<tab>    # becomes:
$ wget gopher://

$ wget --hea<tab>    # becomes:
$ wget --header=

Eu gosto desse recurso, mas às vezes ele me impede de preencher nomes de arquivos em contextos onde o zsh acha que algo mais é mais apropriado:

# Bad:

$ file vs-debug.apk
vs-debug.apk: Zip archive data, at least v2.0 to extract
$ adb push v<tab>     # becomes:
$ adb push version

Eu tenho ^I ligado a expand-or-complete (o widget padrão). O que eu gostaria é ter uma chave diferente para executar expansão de nome de arquivo não filtrada, por exemplo:

# Desired behaviour:

$ adb push v<shift-tab>     # would become:
$ adb push vs-debug.apk

Nada que eu vi em zshzle (1) parecia apropriado, mas eu tentei os seguintes widgets de qualquer maneira:

  • expand-or-complete-prefix
  • menu-expand-or-complete
  • expand-cmd-path
  • expand-word

Eu não quero perder a conclusão com reconhecimento de contexto. Alguma idéia de como posso executar expansão / conclusão de arquivo não filtrado usando uma ligação de chave alternativa?

Estou usando o zsh 5.0.2 (x86_64-apple-darwin12.4.0) e o zsh 4.3.17 (i686-pc-linux-gnu).

    
por mrb 07.08.2013 / 16:48

2 respostas

4

Não há nenhum widget embutido para isso, mas é fácil definir um. Eu suponho que você esteja usando o sistema de conclusão de "novo estilo" (carregado por compinit ).

_complete_files () {
  eval "$_comp_setup"
  _main_complete _files
}
compdef -k _complete_files complete-word '^X/'

A função de conclusão segue as definidas na distribuição zsh em Completion/Base . O compdef interno declara a função como um widget de conclusão e o vincula a uma chave.

    
por 08.08.2013 / 02:20
0

Eu acho que a melhor maneira é fazer com que o zsh realize completações corretas. Dê uma olhada em zsh-completions . É uma coleção de conclusões para todos os tipos de programas. Também há conclusões para adb .

    
por 07.08.2013 / 17:04