Вопрос или проблема
Привязка выбора символа/слова рядом с курсором в 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), так как они могут конфликтовать с вашими настройками.
Надеюсь, эти шаги помогли вам решить вашу проблему! Если у вас есть дополнительные вопросы, не стесняйтесь обращаться.