Implementierung von Zsh-Snippets - zsh

Gibt es eine Möglichkeit, erweiterbare Snippets in zsh zu implementieren?

Ich möchte schreiben können ssh ssh_alias -t :tmux Drücken Sie die Tabulatortaste und dies würde zu `ssh ssh_alias -t" tmux a || tmux "erweitert

Ich möchte, dass dieses Verhalten global ist, damit dieses Snippet beispielsweise an anderen Orten funktioniert mosh ssh_alias - :tmux

Schließlich möchte ich, dass dieses Verhalten befehlsspezifische Abschlussregeln überschreitet.

In diesem Moment erreiche ich mit "Dash" etwas Ă„hnliches.

Antworten:

2 fĂĽr Antwort â„– 1

Es gibt ein Plugin: zsh-Schnipsel. Verwenden Sie es mit einem Plugin-Manager wie Zplugin. Es bindet an Meta-x, getestet - funktioniert. Hier ist ein vollständiger Zplugin-Bericht darüber:

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 ]

1 fĂĽr Antwort â„– 2

Sie könnten versuchen, mit Globale Aliase. Im Gegensatz zu regulären Aliasnamen werden sie unabhängig davon, wo sie in einer Befehlszeile erscheinen, nicht nur in der Befehlsposition erweitert.

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

Damit, :tmux wird erweitert um (ersetzt durch) "tmux a || tmux". Beachten Sie, dass Sie es zweimal in AnfĂĽhrungszeichen setzen mĂĽssen, einmal fĂĽr die Definition und einmal fĂĽr die endgĂĽltige Befehlszeile. Also, wenn du rennst

ssh ssh_alias -t :tmux

zsh wird ersetzen :tmux und ausfĂĽhren

ssh ssh_alias -t "tmux a || tmux"

Normalerweise wird die Erweiterung beim Drücken von nicht angezeigt Tab - Genau wie bei regulären Aliasen. Davon abgesehen, die _expand_alias Widget kann verwendet werden, um Aliase zu erweitern. Sie können es entweder direkt aufrufen (im Emacs-Modus ist es daran gebunden) Strg+x,ein. Es gibt keine Standardbindung im vi-Modus, aber Sie können sie im vicmd-Modus mit ausführen :_expand_alias) oder zum hinzufügen completer zstyle.