Як я можу зберегти колір, коли запускаю зовнішню команду всередині vim?


12

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

Що мені робити, щоб зберегти колір при виклику зовнішньої команди всередині vim?

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


2
Тут чудово працює.
Ігнасіо Васкес-Абрамс

2
"Це питання щодо самого VIM ..."
Ігнасіо Васкес-Абрамс

2
а vim - один із "програмних засобів, якими зазвичай користуються програмісти" ...

1
Так що електронна пошта. Це не означає, що "як я грім" є тут на тему.
Ігнасіо Васкес-Абрамс

2
Vim має ctags, відступ та набагато прямішу підтримку програмування. Електронна пошта робить те, що безпосередньо для програмування?
Єнс

Відповіді:


5

CLI Vim чи GUI Vim?

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

У GUI Vim ви можете отримати лише псевдо-оболонку, яка абсолютно не здатна відображати жодні кольори. Не обійтися і цим.

Якщо вам відчайдушно потрібен кольоровий вихід із зовнішніх команд, вам доведеться запустити зовнішній емулятор терміналу з чимось на зразок :!xterm & або використовувати плагін типу Conque Shell .


1
Я б запропонував щось на кшталт tmux чи екрану.
lucapette

Так, справді. Але запитувач наполягав, що це питання про самого Віма. Tmux чудовий. Вхід на віддалений сервер через SSH та використання добре налаштованого Vim в межах tmux / screen - напрочуд приємний досвід. Ідеально підходить для того, щоб потрапити в зону і залишитися там.
romainl

@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.