Spec-Zone.ru › Fish 3.5

bind - обработка привязок клавиш в fish

Краткое описание

bind [(-M | --mode) MODE] [(-m | --sets-mode) NEW_MODE] [--preset | --user] [-s | --silent] [-k | --key] SEQUENCE 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 ...

Описание

bind управляет привязками.

Он может добавлять привязки, если ему передана ПОСЛЕДОВАТЕЛЬНОСТЬ символов для привязки. Эти символы должны быть записаны как escape-последовательности fish. Наиболее важные из них — \c для клавиши Control, и \e для клавиши Escape, а также, по историческим причинам, клавиша Alt (иногда также называемая «Meta»).

Например, Alt+W можно записать как \ew, а Control+X (^X) — как \cx. Обратите внимание, что привязки клавиш, основанные на Alt, чувствительны к регистру, а основанные на Control — нет. Это ограничение текстовых терминалов, а не fish.

Общие привязки клавиш, которые соответствуют, если нет других привязок, можно задать, указав ПОСЛЕДОВАТЕЛЬНОСТЬ пустой строки (то есть ''). Для большинства привязок клавиш имеет смысл привязать их к функции self-insert (то есть bind '' self-insert). Это вставит любые нажатия клавиш, которые не привязаны конкретно, в редактор. Непечатаемые символы игнорируются редактором, поэтому это не приведет к вставке управляющих последовательностей.

Если используется переключатель -k, вместо последовательности используется имя клавиши (например, «вниз», «вверх» или «backspace»). Используемые имена совпадают с соответствующими переменными curses, но без префикса «key_». (См. terminfo(5) для получения дополнительной информации или используйте bind --key-names для получения списка всех доступных именованных клавиш). Обычно это выведет ошибку, если у текущей записи $TERM нет заданной клавиши, если не указан переключатель -s.

Чтобы узнать, какую последовательность отправляет комбинация клавиш, можно использовать fish_key_reader.

COMMAND может быть любой командой fish, но также может быть одной из набора специальных функций ввода. Они включают функции перемещения курсора, работы с кольцом удаления, выполнения автодополнения и т. д. Используйте bind --function-names для получения полного списка этих функций ввода.

Когда COMMAND — это команда shellscript, рекомендуется поместить фактический код в функцию и просто привязать ее к имени функции. Таким образом, становится значительно проще протестировать функцию во время редактирования, а результат обычно становится более читаемым.

Если скрипт создает вывод, он должен завершиться вызовом commandline -f repaint, чтобы сообщить fish, что требуется перерисовка.

Обратите внимание, что специальные функции ввода нельзя объединять с обычными командами shell script. Команды должны быть полностью последовательностью специальных функций ввода (из bind -f) или всех команд shell script (т. е. допустимого скрипта fish).

Если SEQUENCE не указан, выводятся все привязки (или только привязки в заданном MODE). Если SEQUENCE указан, но COMMAND нет, выводится только привязка, соответствующая этой последовательности.

Чтобы сохранить пользовательские привязки клавиш, поместите операторы bind в config.fish. Кроме того, fish автоматически выполняет функцию fish_user_key_bindings, если она существует.

Привязки клавиш могут использовать «режимы», которые имитируют модальное поведение ввода Vi. По умолчанию используется режим «default», и каждая привязка применяется к одному режиму. Режим можно просмотреть/изменить с помощью переменной $fish_bind_mode.

Параметры

Доступны следующие параметры:

-k или --key

Укажите имя клавиши, например «влево» или «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, так и --user). --preset следует использовать только в полных наборах привязок (например, при работе с fish_vi_key_bindings).

-h или --help

Отображает справку по использованию этой команды.

Специальные функции ввода

Доступны следующие специальные функции ввода:

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

отменить текущую команду и заменить её новой пустой

cancel-commandline

отменить текущую команду и заменить её новой пустой, оставив старую на месте с маркером, показывающим, что она была отменена

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

выполнить текущую командную строку

exit

выйти из оболочки

forward-bigword

переместить курсор на одно слово, ограниченное пробелами, вправо

forward-char

переместить курсор на один символ вправо; или если находится в конце командной строки, принять текущее автопредложение. Если активен пейджер автодополнения, выбрать следующее предложение вместо этого.

forward-single-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 and backward-jump

прочитать другой символ и перейти к его следующему вхождению перед/после курсора

forward-jump-till and backward-jump-till

перейти вправо перед следующим вхождением

repeat-jump and repeat-jump-reverse

повторить последнее перемещение в том же/противоположном направлении

kill-bigword

переместить следующее слово, ограниченное пробелами, в буфер обмена

kill-line

переместить всё от курсора до конца строки в буфер обмена

kill-selection

переместить выделенный текст в буфер обмена

kill-whole-line

переместить строку (включая следующий символ новой строки) в буфер обмена. Если строка является последней, её предшествующий символ новой строки также удаляется

kill-inner-line

переместить строку (без следующего символа новой строки) в буфер обмена

kill-word

переместить следующее слово в буфер обмена

nextd-or-forward-word

если командная строка пуста, перейти вперёд в истории каталогов, в противном случае переместить курсор на одно слово вправо; или если находится в конце командной строки, принять одно слово из текущего автопредложения.

or

выполнить следующую функцию только в случае успешного выполнения предыдущей (примечание: некоторые функции сообщают об успехе)

pager-toggle-search

переключает поле поиска, если пейджер автодополнения виден.

prevd-or-backward-word

если командная строка пуста, перейти назад в истории каталогов, в противном случае переместить курсор на одно слово влево

repaint

повторно выполняет функции приглашения и перерисовывает приглашение (также force-repaint для обратной совместимости)

repaint-mode

повторно выполняет fish_mode_prompt и перерисовывает приглашение. Это полезно для vi-режима. Если fish_mode_prompt отсутствует или не выводит ничего, он работает как обычное перерисовывание.

self-insert

вставить соответствующую последовательность в командную строку

self-insert-notfirst

вставить соответствующую последовательность в командную строку, если курсор не находится в начале

suppress-autosuggestion

удалить текущее автопредложение. Возвращает true, если было предложение для удаления.

swap-selection-start-stop

перейти к другому концу выделенного текста без изменения выделения

transpose-chars

переставить два символа слева от курсора

transpose-words

переставить два слова слева от курсора

togglecase-char

переключить регистр (прописные/строчные) символа под курсором

togglecase-selection

переключить регистр (прописные/строчные) выделения

insert-line-under

добавить новую строку под текущей

insert-line-over

добавить новую строку над текущей

up-line

переместить курсор на строку вверх

undo and redo

отменить или повторить последние изменения в командной строке

upcase-word

сделать текущее слово заглавным

yank

вставить последнюю запись из буфера обмена в буфер

yank-pop

переключиться на предыдущую запись из буфера обмена

Дополнительные функции

Следующие функции включены как обычные, но особенно полезны для редактирования ввода:

up-or-search and down-or-search

перемещает курсор или ищет в истории, в зависимости от позиции курсора и текущего режима

edit_command_buffer

открыть визуальный редактор (управляемый переменными окружения VISUAL или EDITOR) с содержимым текущей командной строки

fish_clipboard_copy

скопировать текущее выделение в системный буфер обмена

fish_clipboard_paste

вставить текущее выделение из системного буфера обмена перед курсором

fish_commandline_append

добавить аргумент к командной строке. Если командная строка уже заканчивается на аргумент, вместо этого удаляется суффикс. Начинает с последней команды из истории, если командная строка пуста.

fish_commandline_prepend

добавить аргумент в начало командной строки. Если командная строка уже начинается с аргумента, вместо этого удаляется префикс. Начинает с последней команды из истории, если командная строка пуста.

Примеры

Выход из оболочки при нажатии Control+D:

bind \cd 'exit'

Выполнение поиска по истории при нажатии Page Up:

bind -k ppage history-search-backward

Включение Виртуальных клавиш управления и переназначение Control+C для очистки строки ввода:

set -g fish_key_bindings fish_vi_key_bindings
bind -M insert \cc kill-whole-line repaint

Запуск git diff и повторное перерисовывание командной строки после нажатия Control+G:

bind \cg 'git diff; commandline -f repaint'

Ограничения терминала

Терминалы Unix, в которых работает fish, по сути, технология 70-х годов. Они имеют некоторые ограничения, которые приложения, работающие внутри них, не могут обойти.

Например, клавиша управления изменяет символ, устанавливая три старших бита в 0. Это означает:

  • Многие символы + управление неотличимы от других клавиш. Control+I это табуляция, Control+J это новая строка (\n).
  • Управление и сдвиг не работают одновременно

Другие клавиши не имеют прямого кодирования и отправляются в виде последовательностей escape. Например, → (Вправо) часто отправляет \e\[C. Эти значения могут отличаться в зависимости от терминала, и отображение обычно доступно в terminfo(5). Однако иногда терминал идентифицируется как, например, xterm-256color для совместимости, но неправильно реализует последовательности xterm.

Особый случай: символ Escape

Кнопка Escape может использоваться автономно, например, для переключения из режима вставки в нормальный режим при использовании сочетаний клавиш Vi. Escape также может использоваться как «мета»-клавиша, для обозначения начала последовательности escape, например, для функциональных или стрелочных клавиш. Также можно определять пользовательские сочетания клавиш, которые начинаются с символа Escape.

Нажатие клавиши Alt вместе с другой клавишей обычно также отправляет символ Escape, например, нажатие Alt+a отправит символ Escape, а затем символ «a».

fish ожидает некоторое время после получения символа Escape, чтобы определить, является ли он автономным или частью последовательности escape. Во время ожидания дополнительные нажатия клавиш заставляют клавишу Escape вести себя как мета-клавишу. Если другие нажатия клавиш не поступают, она обрабатывается как автономный Escape. Время ожидания установлено в 30 миллисекунд (0,03 секунды). Его можно настроить, задав переменную fish_escape_delay_ms значение от 10 до 5000 мс. Это может быть универсальная переменная, которую вы устанавливаете один раз из интерактивной сессии.

© 2022 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.5/cmds/bind.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API