Implementação de trechos de Zsh

2

Existe alguma maneira de implementar trechos expansíveis no zsh?

Eu gostaria de poder escrever ssh ssh_alias -t :tmux press tab e isso seria expandido para o 'ssh ssh_alias -t "tmux a || tmux"

Eu quero que esse comportamento seja global, então esse snippet funcionaria em outros lugares, por exemplo mosh ssh_alias - :tmux

Por fim, quero que esse comportamento seja sobre regras de conclusão específicas do comando.

Neste momento, estou conseguindo algo semelhante com 'Dash'

    
por A B 20.04.2016 / 23:31

2 respostas

2

Existe um plugin: zsh-snippets . Use-o com um gerenciador de plug-ins como zplugin . Ele se liga ao Meta-x, testou-o - funciona. Aqui está um relatório completo sobre o zplugin:

Plugin report for willghatch/zsh-snippets
-----------------------------------------
Source snippets.plugin.zsh
Zle -N snippet-expand
Bindkey ^[x snippet-expand
Zle -N run-help-list-snippets

Functions created:
help-list-snippets run-help-list-snippets
snippet-add        snippet-expand

Variables added or redefined:
snippets  [ "" -> association ]
    
por 29.04.2016 / 15:20
1

Você pode tentar usar Alias Globais . Ao contrário dos aliases regulares, eles são expandidos, não importa onde eles apareçam em uma linha de comando, não apenas na posição de comando.

alias -g :tmux='"tmux a || tmux"'

Com isso, :tmux será expandido para (substituído por) "tmux a || tmux" . Note que você precisa citar duas vezes, uma para a definição e outra para a linha de comando final. Então, se você correr

ssh ssh_alias -t :tmux

zsh substituirá :tmux e executará

ssh ssh_alias -t "tmux a || tmux"

Normalmente, a expansão não é mostrada ao pressionar a tecla Tab - como nos aliases regulares. Dito isso, o widget _expand_alias pode ser usado para expandir os aliases. Você pode chamá-lo diretamente (no modo emacs ele está ligado a Ctrl + x , a . Não há ligação padrão no modo vi, mas você pode executá-lo no modo vicmd com :_expand_alias ) ou adicioná-lo ao completer zstyle.

    
por 21.04.2016 / 12:29

Tags