abbr — управление сокращениями для команд
Синтаксис
abbr --add NAME [--position command | anywhere] [-r | --regex PATTERN]
[--set-cursor[=MARKER]] ([-f | --function FUNCTION] | EXPANSION)
abbr --erase NAME ...
abbr --rename OLD_WORD NEW_WORD
abbr --show
abbr --list
abbr --query NAME ...
Описание
abbr управляет сокращениями — пользовательскими словами, которые заменяются более длинными фразами при вводе.
Примечание
Сокращения применяются только к вводимым командам. Сокращения не расширяются в скриптах.
Например, часто используемая команда git checkout может быть сокращена до gco. После ввода gco и нажатия Пробел или Ввод, полная команда git checkout появится в командной строке. Чтобы избежать расширения, похожего на сокращение, по умолчанию сочетание клавиш Ctrl+Пробел вставляет пробел без расширения.
Сокращение может соответствовать точному слову или шаблону, заданному регулярным выражением. Когда сокращение соответствует слову, это слово заменяется новым текстом, называемым его расширением. Это расширение может быть фиксированной фразой или может быть динамически создано с помощью функции Fish. Это расширение происходит после нажатия пробела или ввода.
Комбинируя эти возможности, можно создавать пользовательские синтаксисы, где регулярное выражение распознаёт совпадающие токены, а функция расширения интерпретирует их. См. раздел Примеры.
Сокращения могут быть добавлены в config.fish.
Подкоманда «add»
abbr [-a | --add] NAME [--position command | anywhere] [-r | --regex PATTERN]
[--set-cursor[=MARKER]] ([-f | --function FUNCTION] | EXPANSION)
abbr --add создаёт новое сокращение. Без дополнительных опций строка NAME заменяется на EXPANSION.
С опцией --position command, сокращение будет расширяться только когда оно расположено как команда, а не как аргумент другой команде. С опцией --position anywhere сокращение может расширяться в любом месте командной строки. По умолчанию используется значение command.
С опцией --regex сокращение соответствует регулярному выражению, заданному PATTERN, а не точному NAME. Шаблон интерпретируется с использованием синтаксиса PCRE2 и должен соответствовать всему токену. Если несколько сокращений соответствуют одному токену, используется последнее добавленное сокращение.
С опцией --set-cursor=MARKER курсор перемещается на первое вхождение MARKER в расширении. Значение MARKER удаляется. Значение MARKER может быть опущено (т.е. просто --set-cursor), в этом случае оно по умолчанию равно %.
С опцией -f FUNCTION или --function FUNCTION, FUNCTION рассматривается как имя функции Fish, а не как буквальная замена. Когда сокращение соответствует, функция вызывается с совпадающим токеном в качестве аргумента. Если возвращаемый код функции равен 0 (успех), токен заменяется выводом функции; в противном случае токен остаётся неизменным. Отдельное указание EXPANSION недопустимо.
Примеры
abbr --add gco git checkout
Добавить новое сокращение, где gco будет заменено на git checkout.
abbr -a --position anywhere -- -C --color
Добавить новое сокращение, где -C будет заменено на --color. Опция -- позволяет рассматривать -C как имя сокращения, а не как опцию.
abbr -a L --position anywhere --set-cursor "% | less"
Добавить новое сокращение, где L будет заменено на | less, поместив курсор перед символом «|».
function last_history_item
echo $history[1]
end
abbr -a !! --position anywhere --function last_history_item
Это сначала создаёт функцию last_history_item, которая выводит последнюю введённую команду. Затем добавляет сокращение, которое заменяет !! результатом вызова этой функции. В совокупности это похоже на функцию расширения истории !! в bash.
function vim_edit
echo vim $argv
end
abbr -a vim_edit_texts --position command --regex ".+\.txt" --function vim_edit
Это сначала создаёт функцию vim_edit, которая добавляет vim перед своим аргументом. Затем добавляет сокращение, которое соответствует командам, оканчивающимся на .txt, и заменяет команду результатом вызова этой функции. Это позволяет выполнять текстовые файлы как команду для их открытия в vim, подобно функции «суффиксный псевдоним» в zsh.
abbr 4DIRS --set-cursor=! "$(string join \n -- 'for dir in */' 'cd $dir' '!' 'cd ..' 'end')"
Это создаёт сокращение «4DIRS», которое расширяется до многострочной цикловой «шаблона». Шаблон входит в каждую директорию, а затем выходит из неё. Курсор позиционируется, готовый ввести команду для выполнения в каждой директории, в месте !, который сам удаляется.
Другие подкоманды
abbr --rename OLD_NAME NEW_NAME
Переименовывает сокращение от OLD_NAME до NEW_NAME
abbr [-s | --show]
Показывает все сокращения в формате, подходящем для импорта и экспорта
abbr [-l | --list]
Выводит имена всех сокращений
abbr [-e | --erase] NAME
Удаляет сокращение с заданным именем
abbr -q or --query [NAME...]
Возвращает 0 (истина), если одно из NAME является сокращением.
abbr -h or --help
Отображает справку для команды abbr.
© 2005-2009 Axel Liljencrantz, 2009-2023 fish-shell contributors
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.6/cmds/abbr.html