1

Я пытался создать некоторое принятое завершение и сразу выполнить комбинацию в рыбе при нажатии Ctrl+Enter.

function fish_user_key_bindings
    bind \c\n accept-autosuggestion execute
end

К сожалению, эта попытка не удалась. Похоже, рыба не любит два сбежавших персонажа:

#bind -a
...
bind \\c\\n accept-autosuggestion execute

Есть идеи получше?

2 ответа2

1

Связывание Ctrl+Enter не имеет никакого смысла. Ключ ввода обычно отправляет возврат каретки; \r , ака \cM . Другими словами, ввод уже является управляющим символом. Поэтому применение модификатора \c не имеет никакого смысла. На самом деле, это должно привести к тому, что Fish выдаст ошибку, поэтому я открою проблему, чтобы напомнить команде, чтобы она это исправила.

Кроме того, вы пытались связать \c\n . Привязка \n (aka \cJ) работает для Fish 2.2.0 или более ранней версии. Но с 2.3.0 вы не получите ожидаемого результата, потому что fish теперь отключает режим icrnl драйвера TTY. Таким образом, Fish получит символ \r (aka \cM), обычно отправляемый клавишей ввода . Так что вы действительно хотите связать \r (или \cM). Конечно, это не меняет того факта, что \c\cM не имеет никакого смысла.

0

Возможно, вы пропустили только '' в командной строке bind.

Действительно, простое выполнение bind \c\n accept-autosuggestion execute генерирует ошибку:

bind: ожидаемый ноль или два параметра, получил 3

Добавление '' вокруг команды, похоже, работает

function fish_user_key_bindings
    bind \c\n 'accept-autosuggestion execute'
end

После выполнения команды bind с помощью команды bind -a

bind \x1cn 'accept-autosuggestion execute'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .