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. Это расширение происходит после нажатия пробела или ввода.
Комбинируя эти функции, можно создавать пользовательские синтаксисы, где регулярное выражение распознаёт совпадающие токены, а функция расширения интерпретирует их. См. раздел Примеры.
Изменено в версии 3.6.0: Предыдущие версии позволяли сохранять сокращения во всеобщих переменных. Теперь это невозможно. Существующие переменные по-прежнему будут импортированы, и abbr --erase также удалит переменные. Рекомендуется добавлять сокращения в config.fish, просто добавив команду abbr --add. При выполнении abbr, вы увидите вывод такого типа
> abbr abbr -a -- foo bar # imported from a universal variable, see `help abbr`
В этом случае вы должны скопировать часть перед комментарием # и сохранить её в config.fish, затем вы можете выполнить abbr --erase для удаления универсальной переменной:
> abbr >> ~/.config/fish/config.fish > abbr --erase (abbr --list)
Подкоманда «add»
abbr [-a | --add] NAME [--position command | anywhere] [-r | --regex PATTERN]
[--set-cursor[=MARKER]] ([-f | --function FUNCTION] | EXPANSION)
abbr --add создаёт новое сокращение. Без дополнительных опций строка ИМЯ заменяется на РАСШИРЕНИЕ.
С опцией --position command, сокращение будет раскрываться только тогда, когда оно расположено как команда, а не как аргумент другой команды. С опцией --position anywhere сокращение может раскрываться в любом месте командной строки. По умолчанию используется command.
С опцией --regex сокращение сопоставляется с использованием регулярного выражения, заданного ШАБЛОН, вместо буквального ИМЯ. Шаблон интерпретируется с использованием синтаксиса PCRE2 и должен соответствовать всему токену. Если несколько сокращений совпадают с одним и тем же токеном, используется последнее добавленное сокращение.
С опцией --set-cursor=МЕТКА курсор перемещается к первому вхождению МЕТКИ в расширении. Значение МЕТКИ удаляется. МЕТКА может быть опущена (т. е. просто --set-cursor), в этом случае она по умолчанию равна %.
С опцией -f ФУНКЦИЯ или --function ФУНКЦИЯ, ФУНКЦИЯ рассматривается как имя функции fish, а не как буквальная замена. Когда сокращение совпадает, функция вызывается с совпадающим токеном в качестве аргумента. Если возвращаемый код функции равен 0 (успех), токен заменяется выводом функции; в противном случае токен остаётся без изменений. РАСШИРЕНИЕ не может быть задано отдельно.
Примеры
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
Переименовывает сокращение от СТАРОЕ_ИМЯ до НОВОЕ_ИМЯ
abbr [-s | --show]
Показывает все сокращения в формате, пригодном для импорта и экспорта
abbr [-l | --list]
Выводит имена всех сокращений
abbr [-e | --erase] NAME
Удаляет сокращение с заданным именем
abbr -q or --query [NAME...]
Возвращает 0 (истина), если одно из ИМЁН является сокращением.
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.7/cmds/abbr.html