Shell essa aba conclui o prefixo?

5

Gostaria que a conclusão da guia se comportasse de maneira diferente quando o cursor está no começo de uma palavra do que quando o cursor está no final de uma palavra.

Eu só vi shells que completam o sufixo, assim:

$ tiff2␣
tiff2bw    tiff2pdf   tiff2ps    tiff2rgba

No entanto, às vezes eu também gostaria de tab-completar o prefixo quando o cursor está no início da palavra. Ou seja, eu quero expandir para todos os comandos que terminam em 2tiff se o cursor estiver no começo da palavra 2tiff , assim:

$ ␣2tiff
raw2tiff gif2tiff bmp2tiff ppm2tiff pnmtotiff ras2tiff e2mtiff fax2tiff

Peixe faz isso em alguns casos:

~> ␣2tiff
bmp2tiff  (Executable, 17kB)  ppm2tiff  (Executable, 14kB)
fax2tiff  (Executable, 18kB)  ras2tiff  (Executable, 14kB)
gif2tiff  (Executable, 18kB)  raw2tiff  (Executable, 17kB)

Isso também tem o efeito colateral de mover o cursor para o final da palavra, e só funciona se não houver conclusão de sufixo válida:

~> ␣tiff
tiff2bw                    (Convert a color TIFF image to greyscale)
tiff2pdf                    (Convert a TIFF image to a PDF document)
tiff2ps                                    (Convert a TIFF image to)
tiff2rgba                 (Convert a TIFF image to RGBA color space)
…and 10 more rows

Não consigo encontrar uma maneira de tornar bash ou zsh prefixar a conclusão da tabulação em ambos os casos.

    
por Nathaniel M. Beaver 20.07.2016 / 00:26

1 resposta

5

Zsh faz isso desde que você ative o "sistema de conclusão de estilo novo" e ative as complete_in_word option .

autoload -U compinit; compinit
setopt complete_in_word

Depois disso, você pode pressionar Tab em qualquer lugar de uma palavra, inclusive no começo, e você receberá propostas de conclusão para o meio da palavra (para o começo, se o cursor estiver em o começo da palavra). (Com algumas configurações mais sofisticadas, a conclusão também pode inserir coisas em outras partes da palavra.)

Outra opção no zsh é ativar o preenchimento de curinga com setopt glob_complete . Por exemplo, digite *2tiff e pressione Tab (com o cursor no final da palavra) para completar no início da palavra.

Existe uma limitação de que, na configuração padrão, pressionar a tecla Tab no início da linha de comando insere uma guia em vez de completá-la. Acho que essa limitação está em expand-or-complete ; se você ligar Tab para menu-complete ou complete-word depois é concluído no início do comando linha também. Com expand-or-complete , você obtém a conclusão no início de uma palavra desde que não seja a primeira coisa que não é espaço em branco na linha de comando, por exemplo, em =2tiff ou ;2tiff .

    
por 20.07.2016 / 02:19