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

Я пытаюсь улучшить свою печать вслепую, у которой очень низкая точность и скорость.

Я заметил, что у меня большие трудности с прописными буквами. Мне часто приходится выходить из домашнего ряда, или я всегда делаю ошибку, если растягиваю мизинец, чтобы добраться до смены.

У меня были те же проблемы с обратным пространством, которые я решил, начав вместо этого использовать ^H, мое управление находится в режиме Capslock, поэтому я могу легко выполнять большинство сочетаний клавиш чтения и легко исправлять ошибки, не выходя из домашней строки.

Может быть, есть способ избежать заглавной буквы? Точно так же, как мы можем экранировать последовательности с помощью ^V или как мы можем транспонировать символы в курсоре с помощью ^T. Есть ли способ перевести символ в курсоре в верхний регистр или что-то в этом роде?

Изменить: для пояснения, как спросили:

Сейчас я использую macOS, оболочка по умолчанию — zsh, но я могу легко переключиться на другую, где смогу добиться этого. Поэтому я действительно принимаю любые возможные решения, поскольку позже смогу попробовать протестировать то же самое в масштабах всей системы.

В большинстве приложений на macOS я могу использовать последовательности управления для редактирования строк так же, как если бы я был в терминале, и я предполагаю, что macOS использует readline для достижения этой цели, а для некоторых приложений я также использую rlwrap, который является оболочкой для readline, поэтому я вероятно, также может быть полезно решение, связанное с readline.

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

1 ответ

Вот что вы можете сделать в Bash 5:

      _up() {
 [ "$READLINE_POINT" -lt 1 ] && return 0
 local char
 char="${READLINE_LINE:$((READLINE_POINT-1)):1}"
 READLINE_LINE="${READLINE_LINE:0:$((READLINE_POINT-1))}${char^}${READLINE_LINE:$READLINE_POINT}" 
}

bind -x '"\C-x\C-u":_up'

С этого момента символ перед текстовым курсором будет преобразован в верхний регистр. Идея заключается в том, что вы используете эту комбинацию сразу после ввода символа нижнего регистра.Ctrl xu

Привяжите функцию к какой-нибудь менее громоздкой комбинации.

— это переменная, которая позволяет нам получать и/или изменять содержимое командной строки. — это переменная, которая позволяет нам узнать и/или установить, где в строке находится текстовый курсор.

Способ довольно ограничен, работает только в командной строке Bash. Это должно хорошо работать в Bash 5.

Поддержка Bash 4READLINE_LINEиREADLINE_POINTно последняя переменная использует байты, а в Bash 5 — символы. Это означает, что вы можете использовать эту функцию в Bash 4, и она будет работать во многих случаях, однако многобайтовые символы могут ее запутать. Исправление функции, чтобы она хорошо работала с многобайтовыми символами в Bash 4, может оказаться непростой задачей.

Другие вопросы по тегам