Fish-shell: рыба в ansi-term emacs имеет быстрые проблемы

Созданный на 11 июн. 2012  ·  16Комментарии  ·  Источник: fish-shell/fish-shell

В режиме ansi-term emacs (возможно, это единственный способ получить реальную силу рыбы внутри emacs) подсказка выглядит так:

2; рыба / дом / ахятт2; рыба / дом / ахятт
ахятт @ahyatt / home / ahyatt>

Мой термин - eterm-color, стандартный для ansi-term. Возможно, некоторые из управляющих последовательностей ansi по умолчанию в приглашении не совсем кошерные.

bug release notes

Самый полезный комментарий

Вышеупомянутое исправление близко. Добавление:

function fish_title
  true
end

в ~ / .config / fish / config.fish исправил это для меня в Emacs 24.1

Все 16 Комментарий

После того, как я сообщил об этом, я случайно заметил, что это задокументировано в исходной документации по рыбам с исправлением: echo 'function fish_title; end'> ~ / .config / fish / config.fish

Однако у меня это не работает:

Добро пожаловать в дружественную интерактивную оболочку Fish
Введите helpB для получения инструкций по использованию рыбы.
fish: Неизвестная функция «fish_title»
fish: Неизвестная функция «fish_title»
ахятт @ahyatt ~>

У меня точно такая же проблема, но с iTerm.

«Исправление» у меня тоже не сработало.

Вышеупомянутое исправление близко. Добавление:

function fish_title
  true
end

в ~ / .config / fish / config.fish исправил это для меня в Emacs 24.1

Это тот самый.

+1

@akrito Спасибо! У меня это тоже сработало.

Хак с названием рыбы у меня не работает. Заголовок может отсутствовать, но папка, отображаемая на плитке, по-прежнему изменяется (при просмотре из iterm)

@SlightlyCyborg : Если вы не используете название рыбы, вы получите папку, отображаемую дважды (и только один раз с ней)? Если вы используете его на другом терминале, он работает?

iTerm имеет специальную интеграцию с оболочками , а версия fish не зависит от того, что $ TERM является iTerm, а только помещает экран в черный список. По умолчанию этот файл будет сохранен как ~/.iterm2_shell_integration.fish , поэтому вы можете посмотреть, что произойдет, когда вы его удалите.

@faho Я проверил его только на iterm (оказывается, это просто стандартный терминал Mac), чтобы узнать, почему я все еще получаю странную строку, напечатанную на термине emacs каждый раз, когда я использовал cd

7;file://Collins-MacBook-Air.local/Users/collinbell/dameon

Да, если я удалю fish_title из конфигурации, то я увижу, что папка дважды появится в приложении Mac Terminal. То же самое происходит и в термине emacs.

@SlightlyCyborg : Запустите это:

    if test "$VTE_VERSION" -ge 3405 -o "$TERM_PROGRAM" = "Apple_Terminal"
        echo "True"
    end

Он печатает "истина"? В этом случае это _our_ cwd-отчет для VTE или Apple Terminal. Поскольку вы запускаете emacs в терминале, который может с этим справиться, мы его печатаем, но затем emacs искажает его, так что термин больше не получает полную последовательность (еще одно ограничение ansi-term).

Возможно, нам придется сделать то, что Apple делает для Emacs:

/etc/bashrc_Apple_Terminal


# Working Directory
#
# Tell the terminal about the current working directory at each prompt.

if [ -z "$INSIDE_EMACS" ]; then
    update_terminal_cwd() {
    # Identify the directory using a "file:" scheme URL, including
    # the host name to disambiguate local vs. remote paths.

    # Percent-encode the pathname.
    local url_path=''
    {
        # Use LC_CTYPE=C to process text byte-by-byte. Ensure that
        # LC_ALL isn't set, so it doesn't interfere

https://gist.github.com/floam/f535842a16226e77d014d67bade2b2f3

Я собираюсь добавить проверку $ INSIDE_EMACS для CWD OSC и определить пустой fish_title, если пользователь использует VTE / Terminal.app. Причина последнего заключается в том, что оба этих современных терминала составляют более приятный заголовок, если мы не пытаемся предоставить собственный (без пути в заголовке дважды, «рыба» в заголовке дважды) - и пользователь может настроить, какие компоненты они d, как в своем терминале в настройках терминала.

До и после в Terminal.app (вы можете настроить Terminal.app, чтобы отображать полный путь, если хотите):
messy

cleaner

Меня сбила интеграция оболочки iTerm. Можем ли мы упомянуть это и в ридми в разделе рыбы?

@rdrey : IIRC, iTerm поставляет это, так что вам придется заняться этим вместе с ними.

Извините, вчера вечером я был в совершенно неправильном репо. Я думал, что комментирую проблему в https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Btools/shell. 😅

Вместо этого я создал PR для iTerm2. (https://github.com/gnachman/iterm2-website/pull/35)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги