Привязка выбора символа/слова рядом с курсором в Alacritty и ZSH

Вопрос или проблема

Привязка выбора символа/слова рядом с курсором в Alacritty и ZSH

Боже, пожалуйста, кто-нибудь помогите. Я теряю рассудок, не могу заставить SHIFT+ARROW выделить символ рядом с курсором и CTRL+SHIFT+ARROW сделать то же самое со словами. Я пробовал множество различных подходов, настраивая bindkeys в .zshrc, настраивая alacritty.toml для использования символов \u001b[1;3C / \u001b[1;3D, и ничего не сработало.

Единственное, что хоть немного напоминало vi-backward(forward)-char(word) в bindkeys, хотя казалось, что это выделяет часть текста в терминале, при копировании не сработало, так что предполагаю, что это не учитывалось Alacritty (также, если не был введён новый символ, выделение сохранялось, и я не мог его отменить)?


Fedora 40, Gnome 46, Alacritty 0.13.2, ZSH 5.9, OhMyZSH 1514145.

Мой .zshrc:

# === === === БАЗА === === ===
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="robbyrussell"
ENABLE_CORRECTION="true"

# === === === НАЗНАЧЕНИЯ КЛАВИШ === === ===
# CTRL + BACKSPACE & DELETE
bindkey '^H' backward-kill-word
bindkey '5~' kill-word
# КЛАВИШИ HOME & END
bindkey '^D' end-of-line
bindkey '^A' beginning-of-line
# Ctrl + E для открытия файлового менеджера в текущем каталоге
open_file_manager() {
  xdg-open . &>/dev/null
}
zle -N open_file_manager
bindkey '^E' open_file_manager

# === === === ПЛАГИНЫ === === ===
plugins=(
  git
  zsh-autosuggestions
  zsh-history-substring-search
  aliases
  colorize
)

# === === === ЦВЕТА & СТИЛИ === === ===
# НЕАКТУАЛЬНО, ПРОПУЩЕНО.

# === === === АЛИАСЫ === === ===
# Редактор по умолчанию
if [[ -n $SSH_CONNECTION ]]; then
  export EDITOR='nano'
else
  export EDITOR='code'
fi
# Алиасы
alias py=python3
alias files=nautilus .
alias websocat=~/Documents/websocat.sh
alias fd=fdfind

# === === === ФУНКЦИИ === === ===
# НЕАКТУАЛЬНО, ПРОПУЩЕНО.

# === === === ИМПОРТЫ & ЭКСПОРТЫ === === ===
# Инициализация
# НЕАКТУАЛЬНО, ПРОПУЩЕНО.
# PATH
# НЕАКТУАЛЬНО, ПРОПУЩЕНО.

Мой alacritty.toml:

# НЕАКТУАЛЬНЫЕ ДЕТАЛИ ПРОПУЩЕНЫ.
[keyboard]
bindings = [
    # ALT+C для копирования.
    { key = "C", mods = "Alt", action = "Copy" },
    # CTRL+L для корректного очистки буфера.
    { key = "L", mods = "Control", chars = "printf \"\\033c\"\n" },
    # CTRL+SHIFT+Q для выхода.
    { key = "Q", mods = "Control|Shift", action = "Quit" },
    # CTRL+SHIFT+N для создания нового окна.
    { key = "N", mods = "Control|Shift", action = "CreateNewWindow" },
    # CTRL+ENTER для полноэкранного режима.
    { key = "Enter", mods = "Control", action = "ToggleFullscreen" },
]

Ответ или решение

Для правильной настройки выделения символов и слов в ZSH с использованием сочетаний клавиш SHIFT+ARROW и CTRL+SHIFT+ARROW в терминале Alacritty, вам потребуется внести изменения как в конфигурационный файл .zshrc, так и в файл alacritty.toml. Ниже приведены необходимые шаги.

1. Настройка Alacritty

Для начала, откройте ваш файл конфигурации alacritty.toml, чтобы добавить необходимые комбинации клавиш для обработки выделения.

keyboard:
  bindings:
    # Выделение символов
    - { key: Left, mods: Shift, action: "ScrollPage", mode: "Normal" }
    - { key: Right, mods: Shift, action: "ScrollPage", mode: "Normal" }
    # Выделение слов
    - { key: Left, mods: Control|Shift, action: "ScrollPage", mode: "Normal" }
    - { key: Right, mods: Control|Shift, action: "ScrollPage", mode: "Normal" }

Обратите внимание, что вместо ScrollPage вам, возможно, будет необходимо использовать действие, которое соответствует вашему случаю использования, так как Alacritty не поддерживает выделение текста непосредственно, как это делает GUI. Однако, для выбора текста, вам может потребоваться добавить дополнительную настройку, которая позволяет выделять текст с помощью мыши.

2. Настройка ZSH

Теперь откройте ваш файл .zshrc и добавьте или измените следующие строки для установки комбинаций клавиш.

# Выделение символов
bindkey -s '^[[1;6D' '\e[1;6D' # Ctrl+Shift+Left Arrow
bindkey -s '^[[1;6C' '\e[1;6C' # Ctrl+Shift+Right Arrow

# Выделение слова
bindkey -s '^[[1;3D' '\e[1;3D' # Shift+Left Arrow
bindkey -s '^[[1;3C' '\e[1;3C' # Shift+Right Arrow

3. Проверка изменений и перезагрузка

После того, как вы внесли все изменения в оба файла, вам нужно применить их. Для этого вы можете перезапустить терминал или выполнить команду source ~/.zshrc, чтобы перезагрузить конфигурацию ZSH.

4. Итоговая проверка

Теперь попробуйте использовать SHIFT+ARROW и CTRL+SHIFT+ARROW, чтобы выбрать символы и слова в вашем терминале. Если всё настраивается правильно, вы должны видеть, что текст выделяется, и сможете его копировать.

5. Дополнительные рекомендации

Если вышеописанные изменения не сработают должным образом, убедитесь, что вы используете самую последнюю версию Alacritty и ZSH. Возможно, вам также будет полезно ознакомиться с документацией Alacritty для получения более подробной информации о поддерживаемых сочетаниях клавиш и их настройках.

Если проблемы все еще сохраняются, возможно, стоит проверить некоторые плагины ZSH (например, zsh-autosuggestions), так как они могут конфликтовать с вашими настройками.

Надеюсь, эти шаги помогли вам решить вашу проблему! Если у вас есть дополнительные вопросы, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...