Я использую сочетания клавиш vi в моей оболочке tcsh.
Теперь я не знаю, в каком режиме vi я нахожусь ( insert
режим или command
режим), что приводит к большому разочарованию.
Кто-нибудь знает способ показать текущий режим vi в оболочке? (включив в подсказку или что-то)
command-line
shell
vi
prompt
Сундар
источник
источник
Я просмотрел документацию и должен был сказать, что не смог найти способ обнаружить и отобразить текущий режим vi. Я надеюсь, что у вас есть приятный сюрприз, и кто-то придумывает решение, но я, конечно, не могу найти способ сделать то, что вы просите.
Я думаю, что есть способ сделать это, но это огромное излишество для крошечного раздражения, и я не думаю, что это то, что вы имели в виду, когда задали этот вопрос. Если это правда, прекратите читать сейчас и наслаждайтесь жизнью.
OTOH, если это действительно ваша любимая мозоль, и это сводит вас с ума, и вы действительно отчаянно хотите решить эту проблему, вот моя идея, как это сделать:
Вкратце, Unix реализует терминальный ввод-вывод в виде полнодуплексного потока ввода-вывода между драйвером устройства и пользовательским процессом, в который могут быть вставлены модули. Он организован в виде стека, поэтому вы можете наложить столько потоков, сколько хотите. Сумма введенных потоков создает ваше поведение терминала ввода / вывода.
Когда вводится символ, первый модуль проверяет его и передает его (если хочет). Когда ответ приходит в противоположном направлении, он снова получает возможность проверить и передать его. Вот как Ctrl-C обрабатывается на более высоком уровне, чем обычная символьная клавиша.
Вы можете создать двоичный файл, реализующий потоковый модуль, который при вызове работает бесшумно на переднем плане, проверяя и передавая все нажатия клавиш, выполняя предпочитаемое действие над нажатиями клавиш, которые вас интересуют. В любом случае, это будет выглядеть так, как будто вы работаете над оболочкой. Оооо. Вы можете вызвать этот двоичный файл в последней (или первой, или любой) строке вашего .tcshrc, и вы даже не узнаете, что он там есть.
Там хороший праймер здесь , но я не мог найти много на эту тему, наверное , потому , что мимо его премьер.
источник
На этой странице есть довольно подробный скрипт, который устанавливает то, что вы хотите (и даже больше) в zsh . Возможно, его можно адаптировать для работы с tcsh (я не очень знаком с этой оболочкой).
источник
Для тех, кто имеет эту точную проблему (как я): я нашел решение в stackoverflow . Очевидно, в readline есть встроенная поддержка для этого, так что вы можете просто добавить следующее к вашему
~/.inputrc
:И чтобы настроить фактическое использование символов:
источник
Редактирование командной строки с помощью tcsh
Другие заметки на странице
tcsh
настройки уже связаны выше.источник
У меня была точно такая же проблема, и я случайно нашел решение. Хотя эта ветка старая, я не смог найти какой-либо другой веб-сайт, предлагающий решение, поэтому я предполагаю, что публикация в этой ветке в порядке.
Просто сбросьте настройки вашей терминальной программы или оболочки. В настоящее время я использую PuTTY, и я просто удалил свои сохраненные настройки для своего сохраненного соединения и заново создал сохраненный сеанс. Работал как шарм.
Надеюсь это поможет!
источник
Пожалуйста, смотрите мой ответ на SO . Bash 4.4 / Readline 7.0 добавит поддержку этой функции, и тем временем я опубликовал исправленные версии Bash 4.3 / Readline 6.3 для github .
источник