Як я можу зберегти колір, коли запускаю зовнішню команду всередині 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.