ZSH - правильный ввод/вывод оболочки внутри Vim/MacVim

Этот вопрос касается использования MacVim и ZSH в Mac OS X.

Я использую оболочку ZSH, и она настроена на использование цветной подсказки, и все прекрасно работает с самой ZSH.

Однако, когда я устанавливаю эту оболочку по умолчанию с Vim (используя: set shell=zsh\ -li), vim дает мне следующие символы при вводе или выводе текста:

[35mnikhgupta[00m at [[33mMacbookPro[00m in [01;32m~[00m [00m

в то время как он должен просто сказать:

nikhgupta at MacbookPro in ~

Когда я ввожу какой-то текст, я получаю те же самые странные символы, вероятно, потому, что я использую подсветку синтаксиса на лету для моей оболочки ZSH. Я сделал вывод, что эти символы являются цветовыми кодами?

Может ли кто-нибудь помочь мне, как отказаться от этих цветовых кодов и просто вывести текст в оболочке Vim?

С Уважением


person Stoic    schedule 17.10.2012    source источник
comment
Ваша цель — использовать цветную подсветку синтаксиса внутри Vim?   -  person jahroy    schedule 18.10.2012
comment
нет .. вместо этого я хочу удалить весь окрашенный синтаксис (который присутствует в моей оболочке ZSH для входа) для команды оболочки (:sh) внутри Vim.   -  person Stoic    schedule 18.10.2012
comment
GUI Vim (MacVim) или CLI Vim? Невозможно сделать это в GUI Vim, у которого нет встроенной оболочки, способной отображать цвета, и нет причин, по которым он должен сломаться в CLI Vim.   -  person romainl    schedule 18.10.2012
comment
@romainl: МакВим. CLI Vim просто переносит меня (или, по крайней мере, заставляет меня так себя чувствовать) к моему терминалу, что идеально. Вышеупомянутая проблема возникает с MacVim. Можем ли мы как-то отключить цвета для этого в MacVim?   -  person Stoic    schedule 18.10.2012
comment
Просто некоторые мысли... Разве типичный файл .bashrc из коробки не содержит два определения подсказок: одно для сред, где возможен цвет, и альтернативное? Я знаю, что вы используете ZSH, но, возможно, вы можете использовать аналогичную логику, чтобы MacVim использовал альтернативную подсказку.   -  person jahroy    schedule 18.10.2012
comment
См. эту ссылку для обсуждения условного выполнения команд в вашем rc-файле при вызове из Vim: github.com/carlhuda/janus/pull/229 См. сообщение eMxyzptlk внизу темы...   -  person jahroy    schedule 18.10.2012
comment
@jahroy: изначально я использовал bash для оболочки vim, но переключил ее на zsh, потому что мне нужны были определенные функции, псевдонимы, переменные, которые были определены в моей оболочке входа в ZSH. Я думаю, мне нужно импортировать эти вещи в мой .bashrc, так как использование zsh также ломает powerline, fugitive, etc... спасибо за вклад :)   -  person Stoic    schedule 18.10.2012
comment
@Stoic Как использование zsh прерывает линию электропередач и беглеца? Я использую первый, раньше пробовал второй, и моя оболочка уже была zsh, когда я начал использовать vim. Powerline вообще не использует оболочку сам по себе, только через некоторые плагины (в т.ч. беглые). Fugitive не использует специфичные для bash вещи (все эти особенности относятся к скриптам, а скрипты уже сделаны в VimL).   -  person ZyX    schedule 18.10.2012


Ответы (1)


Когда вы выполняете :shell из MacVim, значение $TERM устанавливается равным dumb. Вы можете использовать это для соответствующей настройки среды ZSH.

Однако я не знаком с zsh, так что вы сами будете писать правильный условный блок. В bash это будет выглядеть так:

if [ $TERM == 'dumb' ];
  then
    echo 'Special setup for MacVim'
fi

На самом деле, эта проблема какое-то время беспокоила меня, поэтому я просто написал это для собственного использования (в bash):

if [ $TERM == 'dumb' ];
  then
    # no colors
    export PS1="\n\w\n\u $ "
  else
    # colors
    export PS1="\n\[\033[32m\]\w\n\[\033[1;31m\]\[\033[1;36m\]\u\[\033[0m\] $ \[\033[0m\]"
fi
person romainl    schedule 14.11.2012