Я всегда немного смущен, когда bash в vi-mode переключается в режим insert, потому что он не дает подсказки о используемом режиме (команда или редактирование). Есть ли способ отличить моды? Может быть автоматическое изменение цвета курсора или что-то в этом роде?
Способ выделения командного режима и режима вставки в редакторе командной строки Bash Vi
Ответ 1
в/etc/inputrc (или ~/.inputrc) добавьте это:
set show-mode-in-prompt on
это будет префикс вашего приглашения с помощью + во вставном режиме и : в режиме командной строки в bash 4.3
EDIT: в последней версии bash 4.4 вместо этого вы получите подсказку с префиксом "(ins)" или "(cmd)" по умолчанию. но вы можете изменить это:
set vi-ins-mode-string "+"
set vi-cmd-mode-string ":"
Кроме того, вы можете использовать цветовые коды, такие как '\ e [1; 31m', но окружите их "\ 1" и "\ 2", чтобы сохранить readline счастливым:
set vi-cmd-mode-string "\1\e[1;31m\2:\1\e[0m\2"
Ответ 2
Основываясь на ответе @Isaac Hanson, вы можете установить стиль курсора для отображения режима (как и в VIM), установив их в .inputrc
:
set editing-mode vi
set show-mode-in-prompt on
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2
# optionally:
# switch to block cursor before executing a command
set keymap vi-insert
RETURN: "\e\n"
Это даст вам курсор в режиме вставки или курсор для нормального режима.
Другие параметры (замените номер после \e[
):
Ps = 0 -> blinking block.
Ps = 1 -> blinking block (default).
Ps = 2 -> steady block.
Ps = 3 -> blinking underline.
Ps = 4 -> steady underline.
Ps = 5 -> blinking bar (xterm).
Ps = 6 -> steady bar (xterm).
Ваш терминал должен поддерживать DECSCURSR (например, xterm, urxvt, iTerm2). TMUX также поддерживает их (если вы установили TERM=xterm-256color
вне tmux).
Ответ 3
После нескольких лет использования vi-режима в оболочке korn я в основном тренировался, чтобы просто коснуться ESC
несколько раз, прежде чем вводить какие-либо команды, и ESC
, затем i
, чтобы начать вводить текст.
Основная предпосылка заключается в том, что если вы просто нажали ESC
, вы точно знаете, в каком режиме вы находитесь.