Die Antwort unten mit nur ein paar Stimmen ist meiner Meinung nach richtig. Das automatische Laden in ./config/fish/functions scheint nur zu funktionieren, wenn es eine Funktion pro Datei gibt.
mc_electron
Antworten:
360
Einfach benutzen alias. Hier ist ein einfaches Beispiel:
# Define alias in shell
alias rmi "rm -i"# Define alias in config file
alias rmi="rm -i"# This is equivalent to entering the following function:function rmi
rm -i $argv
end
# Then, to save it across terminal sessions:
funcsave rmi
Dieser letzte Befehl erstellt die Datei ~/.config/fish/functions/rmi.fish.
Interessenten möchten vielleicht mehr über Fisch-Aliase im offiziellen Handbuch erfahren .
Beachten Sie auch, dass bei Fischen ein Alias nur ein Shellscript-Wrapper um eine Funktion ist.
user456584
@ user456584 ... und das ist schade, weil Sie nicht tun können alias local "set -l";-(
13
Nur eine Notiz darüber, in welche Datei dies eingefügt werden soll. Ich habe meine eingefügt, ~/.config/fish/config.fishdamit sie jedes Mal geladen wird, wenn ich ein Terminal betreibe.
Ira Herman
Müssen wir nicht zitieren "$argv", um Argumente mit Leerzeichen zu behandeln, wie wir es mit Bash tun "$@"?
Kyb
@kyb, nein, Fisch ist schlauer als so eine Bash. Tatsächlich sind ALLE Variablen in Fischen Arrays. Gehen Sie zu Shell-Variablen und scrollen Sie nach unten zum Unterabschnitt Arrays
Glenn Jackman
117
So definiere ich eine neue Funktion foo, führe sie aus und speichere sie dauerhaft.
sthorne@pearl~>function foo
echo 'foo was here'
end
sthorne@pearl~> foo
foo was here
sthorne@pearl~> funcsave foo
Danke Jerub. Aus irgendeinem Grund gab es nach funcsave einen Fehler: troff: schwerwiegender Fehler: `/usr/share/fish/man/save_function.1 'kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis
armandino
7
Sie können Funktionen auch mit bearbeiten funced. ZB funced foo.
Dennis
14
Laufen funcsave {some_function_name}wird es speichern in~/.config/fish/functions/{some_function_name}.fish
Hjulle
55
Für die Nachwelt sind Fisch-Aliase nur Funktionen:
$ alias foo="echo bar"
$ type foo
foo is a function with definition
function foo
echo bar $argv;
end
Es zu entfernen
$ unalias foo
/usr/bin/unalias: line 2: unalias: foo: not found
$ functions -e foo
$ type foo
type:Could not find “foo”
Nachdem Sie die Funktion erstellt haben, können Sie dies tun funcsave foo. Dadurch wird die Funktion gespeichert ~/.config/fish/functions/foo.fish, in die der Fisch sie automatisch lädt, wenn er zum ersten Mal aus einer neuen Sitzung aufgerufen wird.
Lucretiel
1
alias foo="echo bar"war bei weitem die einfachste Lösung
Ronnie
16
wenn es nicht config.fish in ~ / .config / fish / , machen Sie es.
Dort können Sie Ihre Funktion schreiben.function name; command; end
Speichern Sie Ihre Dateien unter ~/.config/fish/functions/{some_function_name}.fishund sie sollten automatisch geladen werden, wenn Sie mit dem Fischen beginnen.
Wenn Sie ein abbranstelle eines hinzufügen, erhalten aliasSie eine bessere automatische Vervollständigung. Bei Fischen entspricht dies abbreher dem Verhalten eines Bash-Alias.
abbr -a gco git checkout
Will -add eine neue abbrEviation gco, die sich erweitert git checkout.
Um Funktionen aus ~ / .config / fish / functions richtig zu laden
Sie können nur EINE Funktion innerhalb der Datei und der Namensdatei wie den Funktionsnamen + die Erweiterung .fish hinzufügen.
Auf diese Weise können Sie die Funktionen zum erneuten Laden von Dateiinhalten in geöffneten Terminals ändern (beachten Sie, dass eine Verzögerung von ~ 1-5 Sekunden auftreten kann).
Auf diese Weise, wenn Sie entweder über die Befehlszeile bearbeiten
function name; function_content; end
dann
funcsave name
Sie haben benutzerdefinierte Funktionen in der Konsole und benutzerdefinierte Funktionen in derselben Reihenfolge.
Antworten:
Einfach benutzen
alias
. Hier ist ein einfaches Beispiel:Dieser letzte Befehl erstellt die Datei
~/.config/fish/functions/rmi.fish
.Interessenten möchten vielleicht mehr über Fisch-Aliase im offiziellen Handbuch erfahren .
quelle
alias local "set -l"
;-(~/.config/fish/config.fish
damit sie jedes Mal geladen wird, wenn ich ein Terminal betreibe."$argv"
, um Argumente mit Leerzeichen zu behandeln, wie wir es mit Bash tun"$@"
?So definiere ich eine neue Funktion
foo
, führe sie aus und speichere sie dauerhaft.quelle
funced
. ZBfunced foo
.funcsave {some_function_name}
wird es speichern in~/.config/fish/functions/{some_function_name}.fish
Für die Nachwelt sind Fisch-Aliase nur Funktionen:
Es zu entfernen
quelle
funcsave foo
. Dadurch wird die Funktion gespeichert~/.config/fish/functions/foo.fish
, in die der Fisch sie automatisch lädt, wenn er zum ersten Mal aus einer neuen Sitzung aufgerufen wird.alias foo="echo bar"
war bei weitem die einfachste Lösungfunction name; command; end
quelle
Speichern Sie Ihre Dateien unter
~/.config/fish/functions/{some_function_name}.fish
und sie sollten automatisch geladen werden, wenn Sie mit dem Fischen beginnen.quelle
fish beginnt mit der Ausführung von Befehlen in ~ / .config / fish / config.fish. Sie können es erstellen, wenn es nicht vorhanden ist:
und speichern Sie es mit
:wq
Schritt 1. Konfigurationsdatei erstellen (wie .bashrc)
Schritt 2. Schreiben Sie einfach Ihren Alias so.
quelle
Wenn Sie ein
abbr
anstelle eines hinzufügen, erhaltenalias
Sie eine bessere automatische Vervollständigung. Bei Fischen entspricht diesabbr
eher dem Verhalten eines Bash-Alias.Will
-a
dd eine neueabbr
Eviationgco
, die sich erweitertgit checkout
.Hier ist eine Videodemo der resultierenden Funktionen zur automatischen Vervollständigung
quelle
Um Funktionen aus ~ / .config / fish / functions richtig zu laden
Sie können nur EINE Funktion innerhalb der Datei und der Namensdatei wie den Funktionsnamen + die Erweiterung .fish hinzufügen.
Auf diese Weise können Sie die Funktionen zum erneuten Laden von Dateiinhalten in geöffneten Terminals ändern (beachten Sie, dass eine Verzögerung von ~ 1-5 Sekunden auftreten kann).
Auf diese Weise, wenn Sie entweder über die Befehlszeile bearbeiten
dann
Sie haben benutzerdefinierte Funktionen in der Konsole und benutzerdefinierte Funktionen in derselben Reihenfolge.
quelle
Erstellen Sie in ~ / .config / fish / functions eine Funktion namens mkalias.fish und geben Sie diese ein
Dadurch werden automatisch Aliase erstellt.
quelle