Como repetir o parâmetro atualmente digitado em zsh?

3

Às vezes, só precisamos digitar um nome ligeiramente diferente ao usar mv/cp/convert . Por exemplo,

convert IMG-long-number.jpg  IMG-long-number.png

Como eu posso repetir IMG-long-number.jpg antes de digitar o IMG-long-number.png, então eu só preciso fazer pequenos ajustes?

Isso é semelhante a Como repetir atualmente digitado no parâmetro no console bash? mas para zsh / zle.

    
por xuhdev 26.10.2016 / 03:50

5 respostas

3

!#$<Tab> funciona para mim. Dado:

$ echo a

Digitar !#$ e, em seguida, pressionar a tecla Tab expande !#$ para a . A conclusão de tabulação também lista outras opções se você tentar uma operação com : :

$ echo a !#$:
&  -- repeat substitution
A  -- absolute path resolving symbolic links
Q  -- strip quotes
a  -- absolute path
c  -- PATH search for command
e  -- leave only extension
g  -- globally apply s or &
h  -- head - strip trailing path element
l  -- lower case all words
q  -- quote to escape further substitutions
r  -- root - strip suffix
s  -- substitute string
t  -- tail - strip directories
u  -- upper case all words
    
por 26.10.2016 / 06:37
2

Uma alternativa a ter em conta é a seguinte: você não o faz.

Depois de usar a conclusão para obter

convert IMG-long-number.jpg
simplesmente edite isso em
convert IMG-long-number.{jpg,png}
    
por 26.10.2016 / 09:38
2

Eu usaria Ctrl + Alt + _ que copia a palavra anterior ( copy-prev-word widget). Uma vez copiado, você pode usar Backspace para editar a extensão da cópia.

Ou use Ctrl + W para excluí-lo como um todo. Por padrão, Ctrl + W exclui palavras inteiras (definidas como alnums + $ WORDCHARS), mas você pode alterar o comportamento sob demanda com o widget select-word-style .

Em ~/.zshrc :

autoload select-word-style
zle -N select-word-style
bindkey '\eW' select-word-style

Em seguida, você pode selecionar um estilo de palavra diferente com Alt + Shift + W . Você pode usar o estilo de palavra bash (palavras apenas alnums) aqui (a referência é como bash widgets de palavra diferente de Ctrl + W como Alt + B , Alt + D ... considere palavras ).

    
por 26.10.2016 / 15:10
1

Se você usar o modo vi em zsh, poderá escrever apenas o primeiro número, em seguida, ESC e Byt. para copiar até o ponto. Finalmente A e SPC para ir até o final e inserir um espaço e ESC Pi.png para colar e digitar a extensão png.

    
por 26.10.2016 / 06:16
0

Semelhante ao que @muru sugeriu - !#$<TAB> . Mas eu também fiz um bindings como este no meu .zshrc:

bindkey -s "^[," "!#\$^I"

Dessa forma, pressionar Esc , em seguida, vírgula fará isso por você, semelhante a quando Esc , em seguida, ponto, você obterá o último argumento do comando anterior.

    
por 28.07.2017 / 17:44

Tags