La réponse ci-dessous avec seulement quelques votes est, à mon avis, correcte. Le chargement automatique dans ./config/fish/functions ne semble fonctionner que s'il y a une fonction par fichier.
mc_electron
Réponses:
360
Utilisez simplement alias. Voici un exemple de base:
# 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
Cette dernière commande crée le fichier ~/.config/fish/functions/rmi.fish.
Les personnes intéressées aimeraient en savoir plus sur les alias de poisson dans le manuel officiel .
Notez également que dans fish, un alias n'est qu'un wrapper shellscript autour d'une fonction.
user456584
@ user456584 ... et c'est dommage, parce que vous ne pouvez pas faire alias local "set -l";-(
13
Juste une note du fichier dans lequel mettre ceci. J'ai mis le mien ~/.config/fish/config.fishpour qu'il se charge à chaque fois que je lance un terminal.
Ira Herman
N'avons-nous pas besoin de citer "$argv"pour gérer les arguments avec des espaces comme nous le faisons avec bash "$@"?
kyb du
@kyb, non, le poisson est plus intelligent que bash comme ça. En fait, TOUTES les variables des poissons sont des tableaux. Accédez aux variables Shell et
faites
117
Voici comment définir une nouvelle fonction foo, l'exécuter et l'enregistrer de manière persistante.
sthorne@pearl~>function foo
echo 'foo was here'
end
sthorne@pearl~> foo
foo was here
sthorne@pearl~> funcsave foo
Merci Jerub. Pour une raison quelconque, après funcsave, il m'a donné une erreur: troff: erreur fatale: impossible d'ouvrir `/usr/share/fish/man/save_function.1 ': Aucun fichier ou répertoire de ce type
armandino
7
Vous pouvez également modifier des fonctions à l'aide de funced. Par exemple funced foo.
Dennis
14
La course funcsave {some_function_name}l'enregistrera~/.config/fish/functions/{some_function_name}.fish
Hjulle
55
Pour la postérité, les alias de poisson ne sont que des fonctions:
$ alias foo="echo bar"
$ type foo
foo is a function with definition
function foo
echo bar $argv;
end
Pour le retirer
$ unalias foo
/usr/bin/unalias: line 2: unalias: foo: not found
$ functions -e foo
$ type foo
type:Could not find “foo”
Après avoir créé la fonction, vous pouvez le faire funcsave foo. Cela enregistrera la fonction dans ~/.config/fish/functions/foo.fishlaquelle le poisson la chargera automatiquement la première fois qu'il sera appelé depuis une nouvelle session.
Lucretiel
1
alias foo="echo bar"était de loin la solution la plus simple
Ronnie
16
s'il n'y a pas config.fish dans ~ / .config / fish / , faites-le.
là, vous pouvez écrire votre fonction.function name; command; end
Enregistrez vos fichiers sous ~/.config/fish/functions/{some_function_name}.fishet ils devraient être chargés automatiquement lorsque vous démarrez fish.
Si vous ajoutez un abbrau lieu d'un, aliasvous obtiendrez une meilleure saisie automatique. Chez les poissons, correspond abbrplus étroitement au comportement d'un alias bash.
abbr -a gco git checkout
Will -add une nouvelle abbréviation gcoqui s'étend à git checkout.
Réponses:
Utilisez simplement
alias
. Voici un exemple de base:Cette dernière commande crée le fichier
~/.config/fish/functions/rmi.fish
.Les personnes intéressées aimeraient en savoir plus sur les alias de poisson dans le manuel officiel .
la source
alias local "set -l"
;-(~/.config/fish/config.fish
pour qu'il se charge à chaque fois que je lance un terminal."$argv"
pour gérer les arguments avec des espaces comme nous le faisons avec bash"$@"
?Voici comment définir une nouvelle fonction
foo
, l'exécuter et l'enregistrer de manière persistante.la source
funced
. Par exemplefunced foo
.funcsave {some_function_name}
l'enregistrera~/.config/fish/functions/{some_function_name}.fish
Pour la postérité, les alias de poisson ne sont que des fonctions:
Pour le retirer
la source
funcsave foo
. Cela enregistrera la fonction dans~/.config/fish/functions/foo.fish
laquelle le poisson la chargera automatiquement la première fois qu'il sera appelé depuis une nouvelle session.alias foo="echo bar"
était de loin la solution la plus simplefunction name; command; end
la source
Enregistrez vos fichiers sous
~/.config/fish/functions/{some_function_name}.fish
et ils devraient être chargés automatiquement lorsque vous démarrez fish.la source
fish commence par exécuter des commandes dans ~ / .config / fish / config.fish. Vous pouvez le créer s'il n'existe pas:
et enregistrez-le avec
:wq
étape 1. créer un fichier de configuration (comme .bashrc)
étape 2. écrivez simplement votre alias comme ceci;
la source
Si vous ajoutez un
abbr
au lieu d'un,alias
vous obtiendrez une meilleure saisie automatique. Chez les poissons, correspondabbr
plus étroitement au comportement d'un alias bash.Will
-a
dd une nouvelleabbr
éviationgco
qui s'étend àgit checkout
.Voici une démonstration vidéo des fonctionnalités de saisie semi-automatique résultantes
la source
Pour charger correctement les fonctions à partir de ~ / .config / fish / functions
Vous pouvez définir seulement UNE fonction dans le fichier et le nom même que le nom de la fonction + ajouter l' extension .fish.
De cette façon, les fonctions de rechargement du contenu des fichiers dans les terminaux ouverts (notez qu'un certain retard peut se produire ~ 1-5s)
De cette façon, si vous modifiez soit par ligne de commande
puis
vous avez des fonctions définies par l'utilisateur dans la console et personnalisées dans le même ordre.
la source
faire une fonction dans ~ / .config / fish / fonctions appelée mkalias.fish et la mettre dans
et cela créera automatiquement des alias.
la source