Как показать текущий режим Vi при использовании привязок клавиш Vi в оболочке?

Я использую vi привязки клавиш в своей оболочке tcsh.

Теперь, я не знаю, в каком vi режиме я нахожусь (insert режим или command режим), который приводит к большому количеству разочарования.

Кто-либо знает о способе показать текущий vi режим в оболочке? (включением в подсказку или что-то)

15
задан 13.11.2011, 11:33

4 ответа

Я не полагаю, что существует любой способ определить визуально, какой режим Ваш в, но если Вы изменяете свое поведение немного, оно не будет иметь значения.

Если Вы хотите быть в командном режиме, нажмите ESC прежде, чем ввести команду.

Если Вы хотите быть в режиме вставки, нажмите ESC и меня прежде, чем ввести содержание.

Вы закончите тем, что нажатие ESC много, но каждый vi пользователь, которого я когда-либо встречал, делает это так или иначе.

4
ответ дан 07.12.2019, 11:09
  • 1
    Проблема состоит в том, что в оболочке дополнительные ESCs не проигнорированы - когда я даю дополнительный ESC, затем введите команду (скажите, что h для перемещения оставленный) она просто дает звуковой сигнал и ничего не делает. – sundar - Reinstate Monica 13.08.2009, 15:50
  • 2
    "Дополнительным ESC", я означаю нажатие ESC, когда я уже нахожусь в командном режиме - который я делаю много, так как я не знаю, в каком режиме я нахожусь. – sundar - Reinstate Monica 13.08.2009, 15:50

Я взглянул через документацию, и я должен был бы сказать, что не мог найти способ обнаружить и отобразить текущий vi-режим. Я действительно надеюсь, что у Вас есть приятный сюрприз, и кто-то предлагает решение, но я, конечно, не вижу способ сделать то, что Вы спрашиваете.

Я думаю, что существует способ сделать это, но это - крупное излишество для крошечного раздражения, и я не думаю, что это - то, что Вы имели в виду, когда Вы поставили этот вопрос. Если это верно, прекратите читать теперь и наслаждайтесь своей жизнью.

OTOH, если это действительно - Ваш главный объект неприязни, и он сводит Вас с ума, и Вы действительно абсолютно отчаянно хотите собирающийся вкус эта проблема, вот моя идея того, как пойти об этом:

  1. Получите копию Усовершенствованного Программирования в UNIX(R) Environment W. Richard Stevens.
  2. Прочитайте главы по Потокам и Терминалу ввод-вывод.
  3. Загрузите исходный код на вышеупомянутую книгу, которая включает пример потока, который может быть разделен на уровни на терминал.
  4. Реализуйте свою обработку для комбинации клавиши Esc (или оба нажатий клавиш изменения режима) и укажите на это через звонок или фоновое управление текущей строкой.

Короче говоря, Unix реализует терминал ввод-вывод как полнодуплексный поток ввода-вывода между драйвером устройства и пользовательским процессом, в который могут быть вставлены модули. Это организовано как стек, таким образом, можно разделить на уровни столько потоков, сколько Вы хотите. Сумма введенных потоков создает Ваш терминал поведение ввода-вывода.

Когда символ вводится, первый модуль добирается, чтобы осмотреть его и передать его (если он хочет к). Когда ответ прибывает в противоположное направление, это снова получает шанс осмотреть и передать его. Это - то, как Ctrl-C обрабатывается в более высоком уровне к ключу обычного символа.

Можно создать двоичный файл, реализовав потоковый модуль, это, когда вызванные выполнения тихо на переднем плане, осматривая и передавая все нажатия клавиш, выполняя предпочтительное действие с нажатиями клавиш Вы заботитесь о. Во всех отношениях, появится, как будто Вы работаете над оболочкой. Ох. Можно вызвать этот двоичный файл на последнее (или сначала, или любой) строка .tcshrc, и Вы даже не знали бы, что это там.

Здесь существует хорошая краткая информация, но я не мог найти много по этой теме, вероятно, потому что она проходит свое начало.

3
ответ дан 07.12.2019, 11:09

Эта страница имеет довольно подробный сценарий, который настраивает то, что Вы хотите (и больше) в zsh. Возможно, это могло быть адаптировано для работы с tcsh (я не ужасно знаком с той оболочкой).

2
ответ дан 07.12.2019, 11:09

Редактирование командной строки с tcsh

Существует два основных режима для редактирования командной строки,
на основе двух обычно используемых текстовых редакторов, Emacs и vi.

С vi привязкой необходимо переключиться между вставкой и командными режимами;
различные команды полезны в каждом режиме.

режим vi имеет два подрежима, вставьте и командный режим.

  • Режим по умолчанию является вставкой.
  • Можно переключиться между режимами путем нажатия Esc.
  • С другой стороны, в командном режиме,
    при вводе (добавление) или 'я' (вставляем), возвратит Вас режиму вставки
    .

Больше примечаний по tcsh страница настройки, уже связанная выше.

0
ответ дан 07.12.2019, 11:09

Теги

Похожие вопросы