10

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

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

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

3 ответа3

5

CLI Vim или GUI Vim?

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

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

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

1

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

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .