Последовательность управления для прописной буквы
Я пытаюсь улучшить свою печать вслепую, у которой очень низкая точность и скорость.
Я заметил, что у меня большие трудности с прописными буквами. Мне часто приходится выходить из домашнего ряда, или я всегда делаю ошибку, если растягиваю мизинец, чтобы добраться до смены.
У меня были те же проблемы с обратным пространством, которые я решил, начав вместо этого использовать ^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, может оказаться непростой задачей.