Somente nomes de comandos completos se não existirem conclusões de nomes de arquivos

4

Raciocínio: Eu tenho o autocd ativado, mas nunca o uso porque ele faz com que a conclusão da tabulação seja um grande problema, já que cada nome de comando no meu sistema será concluído junto com as conclusões do nome do arquivo.

Comportamento desejado: Eu quero zsh para apenas comandos de aba completa se a seqüência concluída não é um prefixo de qualquer um dos arquivos na pasta atual.

Exemplo de comportamento desejado:

$ ls
foo1
foo2
$f<TAB>
foo1
foo2
$fi<TAB>
find
... (other commands that start with fi)

Acho que, se isso não for possível, seria bom, pelo menos, colocar as conclusões do diretório antes das conclusões do comando.

    
por user223814 12.05.2013 / 16:56

3 respostas

2

Eu tenho as seguintes três linhas no meu arquivo ~/.zshrc :

zle -C complete-files complete-word _generic
zstyle ':completion:complete-files:*' completer _files
bindkey "^F" complete-files

isso liga Ctrl-f ao preenchimento do arquivo / pasta, então se eu sei que definitivamente quero separar um nome de arquivo, então eu uso Ctrl-f ao invés de <tab> . Obviamente, você pode usar uma ligação diferente alterando ^F para outra coisa. O resultado:

$ ls
  foo1
  foo2
$ f<tab>
  f2py
  factor
  faillog
  ...
$ f<Ctrl-f>
  foo1
  foo2
    
por 24.05.2013 / 13:02
1

Para obter este comportamento exato, coloque isso no seu .zshrc:

compdef '_autocd || _command_names' -command-

Encontrei a resposta em este tópico .

    
por 06.01.2014 / 15:45
0

No bash se você fizer

. f<TAB>

então, apenas os nomes dos arquivos serão listados. Eu não sei se zsh tem o mesmo comportamento. Em geral, o bash faz o preenchimento automático usando apenas nomes de arquivos quando você deve inserir um caminho.

    
por 12.05.2013 / 22:17