Як визначити псевдонім у рибній оболонці?


204

Я хотів би визначити деякі псевдоніми в рибі. Мабуть, їх слід мати можливість визначити

~/.config/fish/functions

але вони не завантажуються автоматично, коли я перезавантажую оболонку. Будь-які ідеї?


Відповідь внизу лише з кількома голосами, на мій погляд, правильна. Автозавантаження в ./config/fish/functions, здається, працює лише за наявності однієї функції на файл.
mc_electron

Відповіді:


360

Просто використовуйте alias. Ось основний приклад:

# 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

Ця остання команда створює файл ~/.config/fish/functions/rmi.fish.

Зацікавлені люди можуть хотіти дізнатися більше про псевдоніми риб в офіційному посібнику .


3
Також зауважте, що у риб псевдонім - це просто оболонка оболонки навколо функції.
користувач456584

@ User456584 ... і що неповернення, тому що ви не можете зробити alias local "set -l";-(

13
Просто примітка, в який файл це помістити. Я кладу свою, ~/.config/fish/config.fishщоб вона завантажувалася щоразу, коли я запускаю термінал.
Іра Герман

Чи не потрібно нам цитувати, "$argv"щоб обробляти аргументи з пробілами, як у нас з bash "$@"?
киб

@kyb, nope, риба розумніша, ніж башти. Власне, ВСІ змінні риби - це масиви. Перейдіть до змінних Shell і прокрутіть униз до підрозділу "Масиви"
glenn jackman

117

Ось так я визначаю нову функцію foo, запускаю її і постійно зберігаю її.

sthorne@pearl~> function foo
                    echo 'foo was here'
                end
sthorne@pearl~> foo
foo was here
sthorne@pearl~> funcsave foo

Дякую, Єруб. З якихось причин після функціонування він видав мені помилку: troff: фатальна помилка: не вдається відкрити `/usr/share/fish/man/save_function.1 ': Немає такого файлу чи каталогу
armandino

7
Ви також можете редагувати функції, використовуючи funced. Напр funced foo.
Денніс

14
Біг funcsave {some_function_name}збереже його в~/.config/fish/functions/{some_function_name}.fish
Hjulle

55

Для нащадків псевдоніми риб - це лише функції:

$ alias foo="echo bar"
$ type foo
foo is a function with definition
function foo
    echo bar $argv; 
end

Щоб видалити його

$ unalias foo
/usr/bin/unalias: line 2: unalias: foo: not found
$ functions -e foo
$ type foo
type: Could not find foo

9
Після створення функції ви можете це зробити funcsave foo. Це збереже функцію ~/.config/fish/functions/foo.fish, де риба автоматично завантажить її при першому виклику з нового сеансу.
Лукретьєль

1
alias foo="echo bar"було, безумовно, найпростішим рішенням
Ронні

16
  1. якщо в ~ / .config / fish / немає config.fish , зробіть це.
  2. там ви можете написати свою функцію.function name; command; end

15

Збережіть ваші файли як, ~/.config/fish/functions/{some_function_name}.fishі вони повинні автоматично завантажуватися, коли ви починаєте рибу.


14

риба починається з виконання команд у ~ / .config / fish / config.fish. Ви можете створити його, якщо його немає:

vim ~ / .config / fish / config.fish

і збережіть за допомогою :wq

крок 1. зробити файл конфігурації (наприклад, .bashrc)

config.fish

крок2. просто напишіть свій псевдонім так;

псевдонім rm = "rm -i"


13

Якщо ви додасте abbrзамість цього, aliasви отримаєте краще автоматичне завершення. У риб abbrбільше відповідає поведінці псевдоніма баш.

abbr -a gco git checkout

Буде -add нова abbrавіація, gcoяка розширюється до git checkout.

Ось демонстрація відео результатів автоматичного заповнення


11

Правильно завантажувати функції з ~ / .config / fish / функцій

Ви можете встановити лише ОДНУ функцію у файлі та файлі імені так само, як ім'я функції + Додати розширення .fish.

Таким чином зміна функцій перезавантаження вмісту файлів у відкритих терміналах (зауважте, може виникнути деяка затримка ~ 1-5s)

Таким чином, якщо ви редагуєте або командний рядок

function name; function_content; end

тоді

funcsave name

у вас визначені користувачем функції в консолі та на замовлення, виконані в одному порядку.


0

зробіть функцію в ~ / .config / fish / функції, що називається mkalias.fish, і введіть це

function mkalias --argument key value
  echo alias $key=$value
  alias $key=$value
  funcsave $key
end

і це автоматично створить псевдоніми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.