Чтобы уточнить: я не спрашиваю, как изменить курсор при использовании vim в терминале . Я хочу, чтобы курсор менялся при переключении между режимом ввода и командного режима в vi-режиме Bash:
set -o vi <CR> type some text <ESC> (the cursor changes shape/color)
i (cursor change back) etc...
Я нашел скрипт, который делает возможным изменение цвета курсора при смене режима в zsh , но я не хочу менять оболочки только для этой функции.
Есть ли способ заставить курсор изменить форму, как в gvim, (или даже просто цвет) при переключении между режимами команд и вставки в командной строке Bash?
bash
vi
line-editor
joecan
источник
источник
Ответы:
Добавьте эти две строки в ~ / .inputrc :
источник
set show-mode-in-prompt on
в~/.inputrc
также , чтобы сделать эту работу.Скопировано здесь - редактирование командной строки в стиле vim
Должен быть доступен в
bash
4.3 - см. Список изменений -bash
4.3 в настоящее время находится наrc
стадии разработки, вы должны иметь возможность получать пакеты для большинства дистрибутивов без компиляции из исходного кода, но не в основных репозиториях. Например. Ubuntu (amd64) здесь и Debian (экспериментальное репо) здесь .источник
Я не нашел реального решения, но, возможно, это поможет вам (или кому-то другому) найти лучшее решение.
Вы должны создать скрипт (например, kmtest.sh)
и после добавления его в свой PS1, что-то вроде:
но, как я уже сказал, это не то, что вы хотите, потому что он меняет цвет курсора только после cr. Удачи
гигабайт
источник
Похоже, что есть способ сделать это путем взлома readline. Возможно, мы могли бы настаивать на том, чтобы это было включено?
Вот мой ответ на ТА https://stackoverflow.com/a/12201092/255961, который я обновлю, если получу больше информации.
источник
Хотя это не совсем то, что вам нужно (динамическое изменение курсора), bash 4.4 / readline 7.0 добавит поддержку динамического изменения подсказки . Вы сможете указать индикаторы пользовательских режимов для режимов вставки / команд (это отличается от текущей
show-mode-in-prompt
опции, которая жестко задана для использования+
и:
).К сожалению, эти версии в настоящее время находятся в бета-версии и пока не устраняют все ошибки. Им также не хватает возможности указать, где в подсказке вы хотели бы видеть индикатор режима.
Тем временем я опубликовал исправленные версии bash 4.3 / readline 6.3 на github с этой функциональностью.
источник
Я задал тот же вопрос некоторое время назад в AskUbuntu, когда переходил из Gvim в Console Vim.
Я получил один ответ, но он включал переключение настроек терминала gnome, и эти настройки применялись ко всем терминалам. Таким образом, возможно, что курсор терминала gnome застрял в неправильном состоянии.
Я по-прежнему интересуюсь, получите ли вы удовлетворительное решение, но со временем я приспособился к отсутствию информации о состоянии режима в курсоре. Возможно, я просто чаще нажимаю escape (например,
esc
чтобы убедиться, что я в командном режиме;esc i
чтобы убедиться, что я в режиме вставки); возможно, я смотрю на состояние, отображаемое внизу экрана; возможно я только что усвоил режим.источник