#shell #zsh #vi #prompt
#оболочка #zsh #vi #запрос
Вопрос:
Zsh использует эту zle
функцию для проверки состояния приглашения.
Существует KEYMAP
переменная, которая должна содержать определенные значения в соответствии с используемым вами режимом Vi.
Он отлично работает для INSERT
COMMAND
режима и, но я не могу получить триггер для VISUAL
режима.
Из руководства по Zsh:
18.2 Раскладки
Раскладка ключей в ZLE содержит набор привязок между последовательностями клавиш и командами ZLE. Невозможно привязать пустую последовательность клавиш.
В любое время может быть любое количество раскладки ключей, и у каждой раскладки ключей есть одно или несколько имен. Если удалить все имена раскладки, она исчезнет. bindkey можно использовать для управления именами раскладки.
Изначально существует восемь раскладки ключей:
эмуляция emacs EMACS
эмуляция viins vi — режим вставки
эмуляция vicmd vi — командный режим
эмуляция viopp vi — ожидание оператора
визуальная эмуляция vi — выбор активен
режим инкрементного поиска isearch
команда считывает имя команды
. безопасная резервная раскладка
Я попробовал следующее:
function zle-keymap-select {
echo $KEYMAP
}
zle -N zle-keymap-select
Но вывод продолжает меняться между vicmd
и main
, и когда я нажимаю v
, чтобы войти в визуальный режим, вывода нет.
Комментарии:
1. Визуальный режим — это не отдельное состояние в zsh: оно определяется комбинацией установленной метки, активной области и командного режима vi. Вы можете изменять эти состояния независимо с помощью пользовательского виджета или с помощью виджетов emacs. viopp и visual используются только в качестве локальных расклад-карт, при этом vicmd остается выбранной раскладкой ключей. Это означает, что вам не нужно повторять много привязок в стиле vi для трех ключевых карт: привязки в vicmd являются общими, обратите внимание, как мало привязок содержат visual и viopp по сравнению с vicmd. Но это также означает, что они никогда не выбираются, вызывая обратный вызов.
2. Я использую это , чтобы получить расклад клавиш визуального режима под названием vivis. Может быть, это то, что вам нужно.
Ответ №1:
Точно, я могу понять вашу озабоченность, и если вы не возражаете против использования плагина, я думаю, что приведенный ниже может вам отлично помочь, а также дополнительный бонус в виде улучшения работы в режиме vi и так далее.
zsh-vi-mode: лучший и удобный плагин режима vi (vim) для ZSH.
https://github.com/jeffreytse/zsh-vi-mode
Этот плагин предоставил ZVM_MODE
вам переменную для получения текущего режима vi и лучшего отображения индикатора.
И в настоящее время поддерживаются следующие режимы:
ZVM_MODE_NORMAL
ZVM_MODE_INSERT
ZVM_MODE_VISUAL
ZVM_MODE_VISUAL_LINE
Для обновления индикатора режима vi мы должны добавить наши команды в zvm_after_select_vi_mode_commands
. Например:
После установки этого плагина
# The plugin will auto execute this `zvm_after_select_vi_mode` function
function zvm_after_select_vi_mode() {
case $ZVM_MODE in
$ZVM_MODE_NORMAL)
# Something you want to do...
;;
$ZVM_MODE_INSERT)
# Something you want to do...
;;
$ZVM_MODE_VISUAL)
# Something you want to do...
;;
$ZVM_MODE_VISUAL_LINE)
# Something you want to do...
;;
esac
}
Вот пример: