Получение Emacs ansi-term и Zsh для приятной игры

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

## Setup proper term information for emacs ansi-term mode
[[ $TERM == eterm-color ]] && export TERM=xterm

Но все по-прежнему не работает идеально. Теперь у меня возникают проблемы с выводом вывода за пределы экрана, особенно при использовании чего-то вроде C-r для поиска.

Я обнаружил, что он отлично работает, если вы не изменяете размер окна. Я могу воспроизвести это так:

  1. Запускаем чистый emacs -q
  2. Запустите ansi-term и используйте zsh
  3. Сделать окно полноэкранным
  4. Выведите то, что заполняет экран
  5. Тип C-r
  6. Подсказка будет за пределами экрана

Может быть, есть способ увеличить пространство между выводом и минибуфером, чтобы компенсировать перерегулирование?

У кого-нибудь еще Zsh + Ansi-term работает нормально?

+1 - ты не единственный. Хотя у меня эта проблема возникает только на Mac в режиме tty.

Setjmp 23.12.2010 21:23

Используйте M-r для поиска в истории команд в emacs, а не C-r

jshou 24.01.2013 22:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
17
2
11 348
4

Ответы 4

Хм. Я не думаю, что когда-либо видел, чтобы какое-либо модное редактирование работало хорошо в рамках ansi-term, хотя я не пробовал его лет 20. Я просто попутно спрошу, пробовали ли вы режим оболочки (оболочка M-x), поскольку в любом случае с EMACS это намного естественнее.

Тем не менее, при чтении файла term.el создается впечатление, что ansi-term выполняет большую работу самостоятельно. вы можете захотеть взглянуть на термин «код сырого режима», начиная со строки 1230, по крайней мере, в EMACS 22.3.

Я понял. Это была проблема конфигурации emacs. Этот бит elisp в моем .emacs вызывал это:

(custom-set-variables
 '(fringe-mode nil nil (fringe))
 '(fringes-outside-margins t t))

Спасибо за помощь.

Я тоже давно искал это. Для меня добавление следующего в

;; ansi-term

(global-set-key "\C-x\C-a" '(lambda ()(interactive)(ansi-term "/bin/zsh")))
(global-set-key "\C-x\ a" '(lambda ()(interactive)(ansi-term "/bin/zsh")))

работает. Я выбрал это из http://svn.assembla.com/svn/id774/scripts/dot_files/dot_emacs.d/elisp/global-set-key.el.

Я уверен, что в этом сценарии есть и другие полезности. В качестве дополнительного бонусного экрана мне кажется, что мне нравится работать с emacs.

Попробуйте MultiTerm.

Это единственный режим терминала Emacs, который хорошо работает с zsh. Это позволяет вам легко установить, какие команды вы хотите захватывать с помощью emacs, а какие направлять на терминал. Тем не менее, настроек по умолчанию для меня пока достаточно.

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

if [ -n "$INSIDE_EMACS" ]; then
  chpwd() { print -P "\033AnSiTc %d" }
  print -P "\033AnSiTu %n"
  print -P "\033AnSiTc %d"
fi

Это здорово. Вы знаете, как распространить это на ssh-соединения? (например, если предположить, что моя оболочка подключилась к удаленному компьютеру по определенному пути).

Amelio Vazquez-Reina 27.04.2014 02:35

@ Амелио Васкес-Рейна - Хотел бы я. Это было бы действительно полезно.

bengineerd 06.09.2016 20:31

Другие вопросы по теме