bind - обработка привязок клавиш fish
Синопсис
bind [(-M | --mode) MODE] [(-m | --sets-mode) NEW_MODE] [--preset | --user] [(-s | --silent)] [(-k | --key)] SEQUENCE COMMAND [COMMAND...] bind [(-M | --mode) MODE] [(-k | --key)] [--preset] [--user] SEQUENCE bind (-K | --key-names) [(-a | --all)] [--preset] [--user] bind (-f | --function-names) bind (-L | --list-modes) bind (-e | --erase) [(-M | --mode) MODE] [--preset] [--user] (-a | --all | [(-k | --key)] SEQUENCE [SEQUENCE...])
Описание
bind добавляет привязку для указанной последовательности клавиш к указанной команде.
SEQUENCE — это последовательность символов, к которой необходимо привязать. Они должны быть записаны в виде последовательностей экранирования fish. Например, поскольку нажатие клавиши Alt и другого символа отправляет этот символ с префиксом символа экранирования, привязки клавиш Alt могут быть записаны с использованием \e экранирования. Например, Alt+w можно записать как \ew. Символ управления можно записать аналогичным образом, используя \c экранирование, например, Control+X (^X) можно записать как \cx. Обратите внимание, что привязки клавиш Alt чувствительны к регистру, а привязки клавиш Control — нет. Это ограничение текстовых терминалов, а не fish.
По умолчанию привязку можно установить, указав SEQUENCE пустой строки (то есть, ''). Она будет использоваться всякий раз, когда никакая другая привязка не совпадает. Для большинства привязок клавиш имеет смысл использовать self-insert функцию (т.е. bind '' self-insert) в качестве привязки по умолчанию. Это вставит любые нажатые клавиши, которые не были явно привязаны, в редактор. Непечатные символы игнорируются редактором, поэтому это не приведет к отображению управляющих последовательностей.
Если используется переключатель -k, вместо последовательности используется имя клавиши (например, 'down', 'up' или 'backspace'). Имена совпадают с соответствующими переменными curses, но без префикса 'key_'. (См. terminfo(5) для получения дополнительной информации или используйте bind --key-names для получения списка всех доступных именованных клавиш.) Если используется вместе с переключателем -s, bind будет молча игнорировать привязки к именованным клавишам, которые не найдены в termcap для текущего $TERMINAL, в противном случае будет выдано предупреждение.
COMMAND может быть любой командой fish, но она также может быть одной из набора специальных функций ввода. Они включают функции для перемещения курсора, работы с кольцом удаления, выполнения автозаполнения и т. д. Используйте bind --function-names для получения полного списка этих функций ввода.
Когда COMMAND является командным сценарием, рекомендуется поместить фактический код в функцию и просто привязать к имени функции. Таким образом, становится значительно проще тестировать функцию во время редактирования, а результат, как правило, также более читабелен.
Если скрипт генерирует вывод, он должен завершиться вызовом commandline -f repaint для того, чтобы сообщить fish, что необходимо перерисовать экран.
Если предоставлено несколько COMMAND, они все выполняются в указанном порядке при нажатии клавиши. Обратите внимание, что специальные функции ввода не могут быть объединены с обычными командными сценариями. Команды должны быть полностью последовательностью специальных функций ввода (из bind -f) или всеми командными сценариями (т.е., допустимым скриптом fish).
Если SEQUENCE не указано, печатаются все привязки (или только привязки в указанном MODE). Если SEQUENCE указано без COMMAND, выводится только привязка, соответствующая данной последовательности.
Чтобы сохранить пользовательские привязки клавиш, поместите bind операторы в файл config.fish. Кроме того, fish также автоматически выполняет функцию fish_user_key_bindings, если она существует.
Привязки клавиш могут использовать «режимы», которые имитируют поведенческие режимы ввода Vi. Режим по умолчанию — «default», и каждая привязка применяется к одному режиму. Режим можно просмотреть/изменить с помощью переменной $fish_bind_mode.
Доступны следующие параметры:
-
-kили--keyУкажите имя клавиши, например, 'left' или 'backspace', вместо последовательности символов -
-Kили--key-namesОтобразить список доступных имен клавиш. Указание-aили--allвключает клавиши, у которых нет известного сопоставления -
-fили--function-namesОтобразить список доступных функций ввода -
-Lили--list-modesОтобразить список определённых режимов привязки -
-M MODEили--mode MODEУкажите режим привязки, в котором используется привязка. По умолчанию — «default» -
-m NEW_MODEили--sets-mode NEW_MODEИзменить текущий режим наNEW_MODEпосле выполнения этой привязки -
-eили--eraseУдалить привязку с заданной последовательностью и режимом вместо определения новой. Несколько последовательностей могут быть указаны с этим флагом. Указание-aили--allс-Mили--modeудаляет все привязки в данном режиме независимо от последовательности. Указание-aили--allбез-Mили--modeудаляет все привязки во всех режимах независимо от последовательности. -
-aили--allСм.--eraseи--key-names -
--presetи--userуказать, должна ли привязка работать с пользовательскими или предопределенными привязками. Пользовательские привязки имеют приоритет над предопределенными привязками, когда fish ищет сопоставления. По умолчанию все вызовыbindработают на уровне "user", за исключением списка, который покажет оба уровня. Все вызовы, за исключением вставки новых привязок, могут работать на обоих уровнях одновременно.--presetследует использовать только в полных наборах привязок (например, при работе надfish_vi_key_bindings).
Специальные функции ввода
Доступны следующие специальные функции ввода:
-
and, выполнить следующую функцию только в случае успешного выполнения предыдущей (примечание: только некоторые функции сообщают об успехе) -
accept-autosuggestion, полностью принять текущее автоматическое предложение -
backward-char, переместить на один символ влево -
backward-bigword, переместить на одно слово, разделенное пробелами, влево -
backward-delete-char, удалить один символ слева от курсора -
backward-kill-bigword, переместить слово, разделенное пробелами, слева от курсора в кольцо удаления -
backward-kill-line, переместить все символы с начала строки до курсора в кольцо удаления -
backward-kill-path-component, переместить один компонент пути слева от курсора в кольцо удаления. Компонент пути — это все, что, вероятно, принадлежит компоненту пути, т.е. не одно из следующих:/={,}'":@ |;<>&, плюс новые строки и табуляции. -
backward-kill-word, переместить слово слева от курсора в кольцо удаления. Здесь «слово» — это всё до знаков препинания или пробелов. -
backward-word, переместить одно слово влево -
beginning-of-buffer, переместиться в начало буфера, т.е. в начало первой строки -
beginning-of-history, переместиться в начало истории -
beginning-of-line, переместиться в начало строки -
begin-selection, начать выделение текста -
cancel, отменить текущую команду и заменить её новой пустой -
capitalize-word, сделать текущее слово заглавным -
complete, предположить оставшуюся часть текущего токена -
complete-and-search, вызвать просматриваемый поиск по вариантам завершения (для удобства это также перемещает назад в просматриваемом списке завершения) -
delete-char, удалить один символ справа от курсора -
delete-or-exit, удалить один символ справа от курсора или выйти из оболочки, если командная строка пуста -
down-line, переместить вниз на одну строку -
downcase-word, сделать текущее слово строчными -
end-of-buffer, переместиться в конец буфера, т.е. в конец первой строки -
end-of-history, переместиться в конец истории -
end-of-line, переместиться в конец строки -
end-selection, завершить выделение текста -
expand-abbrрасширяет любой сокращение, находящееся в данный момент под курсором -
executeвыполнить текущую командную строку -
force-repaintповторно выполнить функции подсказки без объединения -
forward-bigword, переместить на одно слово, разделенное пробелами, вправо -
forward-char, переместить на один символ вправо -
forward-word, переместить на одно слово вправо -
history-search-backward, искать в истории предыдущее совпадение -
history-search-forward, искать в истории следующее совпадение -
history-prefix-search-backward, искать в истории предыдущее совпадение по префиксу -
history-prefix-search-forward, искать в истории следующее совпадение по префиксу -
history-token-search-backward, искать в истории предыдущее совпадающее аргумент -
history-token-search-forward, искать в истории следующее совпадающее аргумент -
forward-jumpиbackward-jump, считать ещё один символ и перейти к его следующему вхождению после/перед курсором -
forward-jump-tillиbackward-jump-till, перейти вправо перед следующим вхождением -
repeat-jumpиrepeat-jump-reverse, повторить последнее перемещение в том же/противоположном направлении -
kill-bigword, переместить следующее слово, разделенное пробелами, в кольцо удаления -
kill-line, переместить все символы от курсора до конца строки в кольцо удаления -
kill-selection, переместить выделенный текст в кольцо удаления -
kill-whole-line, переместить строку в кольцо удаления -
kill-word, переместить следующее слово в кольцо удаления -
pager-toggle-search, переключает поле поиска, если просматриваемый список завершений виден. -
repaintповторно выполняет функции подсказки и перерисовывает подсказку. Несколько последовательных перерисовок объединяются. -
repaint-modeповторно выполняет функцию fish_mode_prompt и перерисовывает подсказку. Это полезно для режима vi. Если fish_mode_prompt не существует, она действует как обычное перерисовка. -
self-insert, вставить соответствующую последовательность в командную строку -
self-insert-notfirst, вставить соответствующую последовательность в командную строку, если курсор не находится в начале -
suppress-autosuggestion, удалить текущее автоматическое предложение -
swap-selection-start-stop, перейти к другому концу выделенного текста, не изменяя выделение -
transpose-chars, переставить два символа слева от курсора -
transpose-words, переставить два слова слева от курсора -
up-line, переместиться вверх на одну строку -
upcase-word, сделать текущее слово заглавным -
yank, вставить в буфер последнюю запись кольца удаления -
yank-pop, переместить к предыдущей записи кольца удаления
Примеры
bind \cd 'exit'
Приводит к тому, что fish завершается при нажатии Control+D.
bind -k ppage history-search-backward
Выполняет поиск в истории при нажатии клавиши Page Up.
set -g fish_key_bindings fish_vi_key_bindings bind -M insert \cc kill-whole-line force-repaint
Включает привязки клавиш Vi и переопределяет Control+C на очистку строки ввода.
Особый случай: символ экранирования
Клавиша Esc может использоваться самостоятельно, например, для переключения из режима вставки в нормальный режим при использовании сочетаний клавиш Vi. Клавиша Esc также может использоваться в качестве «мета»-клавиши, для обозначения начала последовательности Esc, например, для функциональных или стрелочных клавиш. Также можно определить пользовательские сочетания, которые начинаются с символа Esc.
Удержание клавиши Alt вместе с другой клавишей обычно также отправляет символ Esc, например, удержание Alt+a отправит символ Esc, а затем символ "a".
fish ожидает некоторое время после получения символа Esc, чтобы определить, является ли он самостоятельным или частью последовательности Esc. Во время ожидания дополнительные нажатия клавиш заставляют клавишу Esc вести себя как мета-клавиша. Если другие нажатия клавиш не поступают, она обрабатывается как самостоятельный символ Esc. Время ожидания установлено в 30 миллисекунд (0,03 секунды). Его можно настроить, установив переменную fish_escape_delay_ms со значением от 10 до 5000 мс. Это может быть универсальная переменная, которую вы устанавливаете один раз из интерактивной сессии.
© 2019 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.1/cmds/bind.html