F├╝gen Sie Abk├╝rzungen in der Fischkonfiguration hinzu - Shell, Fisch

Ich w├╝rde das gerne nutzen Abk├╝rzungen Merkmal der Fischschale, insbesondere f├╝r die bekannte Bash-Variable !! oder Aliase zu allgemeinen Git-Befehlen. Ich wei├č, dass Abk├╝rzungen wie im folgenden Ausschnitt hinzugef├╝gt werden k├Ânnen:

abbr -a gco git checkout

Ich wei├č auch, dass diese Einstellung in einer Datei gespeichert ist, die sich unter befindet .config/fish/fishd.hostIn dieser Datei wird jedoch auch darauf hingewiesen, dass sie nicht bearbeitet werden darf, da ├änderungen m├Âglicherweise verloren gehen (da die Datei automatisch generiert wird).

Meine Frage ist also, wie man diese Abk├╝rzungen hinzuf├╝gtin einer Konfigurationsdatei, weil ich meine Punktedateien in einem Git-Repository ablegen m├Âchte. Und wenn ich diese Punktedateien auf einem separaten Computer verwende, m├Âchte ich nicht alle ausf├╝hren abbr befehle erneut.

Antworten:

12 f├╝r Antwort Ôäľ 1

Entschuldigung, ich bin nicht sicher, ob ich verstehe, was Sie fragen. Aber wenn Ihre Frage ist, wie Sie Ihre einstellen abbr Definitionen beim Start (und in einer Datei, die Sie in einem Repository speichern und zwischen Computern freigeben k├Ânnen), sollten Sie die Datei verwenden ~/.config/fish/config.fish das ist Fisch "s ├Ąquivalent zu .bashrc in Bash.

Da Abk├╝rzungen in gespeichert sindDie globalen / universellen Variablen m├╝ssen nicht jedes Mal zur├╝ckgesetzt werden, wenn Sie ein Terminalfenster ├Âffnen. Sie k├Ânnen also in diese Konfigurationsdatei einen Schutz einf├╝gen, um zu verhindern, dass sie jedes Mal zur├╝ckgesetzt werden (was die Dinge etwas beschleunigt), wie hier erl├Ąutert: https://github.com/fish-shell/fish-shell/issues/1976#issuecomment-168698602

Bearbeiten (April 2019):

Nach Fisch ├Ąnderte sich die Art und Weise universelle VariablenIn der Version 3.0.0 scheint die Sicherheitsfunktionalit├Ąt zu verhindern, dass ├änderungen in der abbr-Liste auch nach dem ├ľffnen neuer Terminalfenster oder dem Neustart des Computers ├╝bernommen werden. Daher habe ich diese Zeilen aus dem Beispiel entfernt.

Z.B. meine config.fish sieht so aus (f├╝r Git Befehle):

  echo -n Setting abbreviations...

abbr g "git"
abbr ga "git add"
abbr gb "git branch"
abbr gbl "git blame"
abbr gc "git commit -m"
abbr gca "git commit --amend -m"
abbr gco "git checkout"
abbr gcp "git cherry-pick"
abbr gd "git diff"
abbr gf "git fetch"
abbr gl "git log"
abbr gm "git merge"
abbr gp "git push"
abbr gpf "git push --force-with-lease"
abbr gpl "git pull"
abbr gr "git remote"
abbr grb "git rebase"
abbr gs "git status"
abbr gst "git stash"

echo "Done"

1 f├╝r Antwort Ôäľ 2

Das wurde behoben! Am Ende habe ich nur die Ausgabe von gemacht abbr -s in ein Fish-Skript. Also in K├╝rze:

abbr -s > abbr.fish
(edit abbr.fish, add the following line to the top:) #! /usr/bin/fish
chmod +x abbr.fish

Und du bist fertig!

Alles, was Sie jetzt tun m├╝ssen, ist einfach laufen abbr.fish Auf jeder Fischmaschine, auf der Sie Ihre Abk├╝rzungen haben m├Âchten, und vorab.


0 f├╝r Antwort Ôäľ 3

Abk├╝rzungen werden in Fischen als universelle Variablen gespeichert, daher sind sie meiner Meinung nach besser geeignet, um interaktiv als Variablen verwendet zu werden schnell und dreckigÔäó M├Âglichkeit, Ihre bevorzugten Erweiterungen beizubehalten.

Wenn Sie m├Âchten, dass diese Konfiguration in anderen Feldern verf├╝gbar ist und diese mit Ihren Punktedateien synchronisiert, empfehle ich, eine Funktion als zu erstellen gco.fishusw. stattdessen f├╝r jede Abk├╝rzung.

  • gco.fish

    function gco
    command git checkout $argv
    end
    

Funktionen sind faul in Fisch geladen und werden immer besser als Laufen abbr (was auch ist nicht ein Fisch eingebaut, aber eine regul├Ąre Funktion mit einer Definition type abbr) f├╝r jede Abk├╝rzung in Ihrem config.fish.


0 f├╝r Antwort Ôäľ 4

Ich habe wieder Fisch probiert und eine L├Âsung gefunden, die jetzt f├╝r mich funktioniert. Es ist auch so in der Fischdokumentation.

Sie schlagen einfach vor, zur├╝ckzusetzen fish_user_abbreviations und jeden anrufen abbr wieder und wieder. (Ich habe nicht mal das benutzt if in meinem fall funktioniert das auch gut)

if status --is-interactive
set -g fish_user_abbreviations
abbr --add first "echo my first abbreviation"
abbr --add second "echo my second abbreviation"
# etcetera
end

Es ist eigentlich ├Ąhnlich wie was Schlug MJV vor, aber ohne den Nachteil, dass es zwischengespeichert wird. Der Kompromiss ist wahrscheinlich, dass der Start etwas langsamer ist, aber ich werde das im Auge behalten. Ich gehe mit dieser Variante um, da sie auch in der Dokumentation erw├Ąhnt wird.