Как сохранить цвет при запуске внешней команды внутри vim?


12

Например, для команды ls --colorотображаются красочные результаты при выполнении в оболочке. Однако, когда я звоню :!ls --colorв vim, вся информация о цветах исчезает.

Что мне нужно сделать, чтобы сохранить цвет при вызове внешней команды внутри vim?

EDIT: Для того, чтобы прояснить мой вопрос , это вопрос о VIM сам, я НЕ фактически спрашивать , как включить «LS» 's цвета. Что я хочу знать, так это то, как включить отображение разноцветных результатов ВСЕХ команд оболочки (если они дают разноцветные результаты).


2
Здесь отлично работает.
Игнасио Васкес-Абрамс

2
«Это вопрос о самом VIM ...»
Игнасио Васкес-Абрамс

2
и vim является одним из «программных инструментов, обычно используемых программистами» ...

1
Так что электронная почта. Это не обязательно означает, «как мне Thunderbird» здесь по теме.
Игнасио Васкес-Абрамс

2
В Vim есть ctags, indent и гораздо более прямая поддержка программирования. Что делает электронная почта для программирования?
Дженс

Ответы:


5

CLI Vim или GUI Vim?

Вы не можете отобразить вывод команды :!lsили :!ls --colorлюбой другой внешней команды в самом CLI Vim, потому что она однопоточная: Vim приостановлен и $ ls --colorвыполняется в вашей оболочке. Обойти это невозможно. Ну, вы можете поместить вывод внешних команд в текущий буфер, но это не одно и то же.

В графическом интерфейсе Vim вы можете получить только псевдооболочку, которая совершенно не отображает цвета. Обойти это тоже невозможно.

Если вам отчаянно нужен цветной вывод от внешних команд, вам нужно запустить эмулятор внешнего терминала с чем-то вроде :!xterm & или использовать плагин, такой как Conque Shell .


1
Я бы предложил что-то вроде tmux или screen тоже.
Люкапет

Да, в самом деле. Но спрашивающий настаивал, что это вопрос о самой Vim. Тмукс великолепен. Вход в систему на удаленном сервере через SSH и использование хорошо настроенного Vim в tmux / screen - это удивительно приятный опыт. Идеально подходит для входа в зону и пребывания там.
Ромейн

@romainl спасибо за отличный ответ. Я использовал gVim и ложно предположил, что CLI vim также не может отображать цвет ... В некоторых испытаниях я обнаружил, что цвет правильно отображается в моем CLI vim.
CMinus

1

Вы можете :set shellcmdflag=-icзаставить оболочку вести себя интерактивно, как ваша командная строка.


1

Вы можете сделать функцию в .bashrc:

function ls { /bin/ls --color=always; }
export -f ls

Извините за опечатку, но я не спрашиваю, как отображать цвет с помощью команды "ls" - мне интересно, как сохранить цвет при выполнении внешних команд с помощью vim. Я просто использовал "ls" в качестве примера.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.