Odpowiedź poniżej z zaledwie kilkoma głosami jest, moim zdaniem, poprawna. Automatyczne ładowanie w ./config/fish/functions wydaje się działać tylko wtedy, gdy na plik przypada jedna funkcja.
mc_electron
Odpowiedzi:
360
Po prostu użyj alias. Oto podstawowy przykład:
# 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
To ostatnie polecenie tworzy plik ~/.config/fish/functions/rmi.fish.
Zainteresowani mogą chcieć dowiedzieć się więcej o aliasach ryb w oficjalnym podręczniku .
Zauważ też, że u ryb alias jest po prostu oplotem powłoki w funkcji.
user456584
@ user456584 ... i to źle, bo nie możesz tego zrobić alias local "set -l";-(
13
Notatka o tym, który plik to wstawić. Wkładam mój, ~/.config/fish/config.fishaby ładował się za każdym razem, gdy uruchamiam terminal.
Ira Herman
Czy nie musimy cytować, "$argv"aby obsługiwać argumenty ze spacjami, tak jak w przypadku bash "$@"?
Kyb
@kyb, nie, ryba jest mądrzejsza niż bash w ten sposób. W rzeczywistości WSZYSTKIE zmienne w rybach są tablicami. Przejdź do zmiennych Shell i przewiń w dół do podsekcji Tablice
glenn jackman
117
W ten sposób definiuję nową funkcję foo, uruchamiam ją i zapisuję na stałe.
sthorne@pearl~>function foo
echo 'foo was here'
end
sthorne@pearl~> foo
foo was here
sthorne@pearl~> funcsave foo
Dzięki Jerub. Z jakiegoś powodu po funcsave dał mi błąd: troff: błąd krytyczny: nie można otworzyć `/usr/share/fish/man/save_function.1 ': Brak takiego pliku lub katalogu
armandino
7
Możesz także edytować funkcje za pomocą funced. Np funced foo.
Po utworzeniu funkcji możesz to zrobić funcsave foo. Spowoduje to zapisanie funkcji w miejscu ~/.config/fish/functions/foo.fish, w którym ryba automatycznie załaduje ją przy pierwszym wywołaniu z nowej sesji.
Lucretiel,
1
alias foo="echo bar"było zdecydowanie najłatwiejszym rozwiązaniem
Ronnie
16
jeśli nie ma config.fish w ~ / .config / fish / , zrób to.
tam możesz napisać swoją funkcję.function name; command; end
Aby poprawnie załadować funkcje z ~ / .config / fish / functions
Możesz ustawić tylko JEDEN funkcję w pliku i nazwie pliku tak samo jak nazwa funkcji + dodać rozszerzenie .fish.
W ten sposób zmiana zawartości pliku powoduje ponowne załadowanie funkcji w otwartych terminalach (zwróć uwagę, że może wystąpić pewne opóźnienie ~ 1-5s)
W ten sposób edytujesz albo za pomocą wiersza polecenia
function name; function_content; end
następnie
funcsave name
masz funkcje zdefiniowane przez użytkownika w konsoli i niestandardowe wykonane w tej samej kolejności.
Odpowiedzi:
Po prostu użyj
alias
. Oto podstawowy przykład:To ostatnie polecenie tworzy plik
~/.config/fish/functions/rmi.fish
.Zainteresowani mogą chcieć dowiedzieć się więcej o aliasach ryb w oficjalnym podręczniku .
źródło
alias local "set -l"
;-(~/.config/fish/config.fish
aby ładował się za każdym razem, gdy uruchamiam terminal."$argv"
aby obsługiwać argumenty ze spacjami, tak jak w przypadku bash"$@"
?W ten sposób definiuję nową funkcję
foo
, uruchamiam ją i zapisuję na stałe.źródło
funced
. Npfunced foo
.funcsave {some_function_name}
to uratuje~/.config/fish/functions/{some_function_name}.fish
Dla potomnych aliasy ryb to tylko funkcje:
Aby go usunąć
źródło
funcsave foo
. Spowoduje to zapisanie funkcji w miejscu~/.config/fish/functions/foo.fish
, w którym ryba automatycznie załaduje ją przy pierwszym wywołaniu z nowej sesji.alias foo="echo bar"
było zdecydowanie najłatwiejszym rozwiązaniemfunction name; command; end
źródło
Zapisz swoje pliki jako
~/.config/fish/functions/{some_function_name}.fish
i powinny one zostać automatycznie załadowane po uruchomieniu ryby.źródło
fish zaczyna się od wykonania poleceń w ~ / .config / fish / config.fish. Możesz go utworzyć, jeśli nie istnieje:
i uratuj to za pomocą
:wq
krok 1. Utwórz plik konfiguracyjny (jak .bashrc)
krok 2. po prostu napisz swój alias w ten sposób;
źródło
Jeśli dodasz
abbr
zamiastalias
, uzyskasz lepsze automatyczne uzupełnianie. U rybabbr
bardziej pasuje do zachowania pseudonimu bash.Będzie
-a
dd nowyabbr
eviationgco
który rozszerza sięgit checkout
.Oto demonstracja wideo wynikowych funkcji autouzupełniania
źródło
Aby poprawnie załadować funkcje z ~ / .config / fish / functions
Możesz ustawić tylko JEDEN funkcję w pliku i nazwie pliku tak samo jak nazwa funkcji + dodać rozszerzenie .fish.
W ten sposób zmiana zawartości pliku powoduje ponowne załadowanie funkcji w otwartych terminalach (zwróć uwagę, że może wystąpić pewne opóźnienie ~ 1-5s)
W ten sposób edytujesz albo za pomocą wiersza polecenia
następnie
masz funkcje zdefiniowane przez użytkownika w konsoli i niestandardowe wykonane w tej samej kolejności.
źródło
utwórz funkcję w ~ / .config / fish / functions o nazwie mkalias.fish i włóż ją
a to automatycznie utworzy aliasy.
źródło