Làm thế nào tôi có thể giữ màu khi tôi chạy lệnh bên ngoài bên trong vim?


12

Ví dụ, đối với lệnh ls --colorhiển thị kết quả đầy màu sắc khi được thực thi trong trình bao. Tuy nhiên, khi tôi gọi :!ls --colorbên trong vim, tất cả thông tin màu sẽ biến mất.

Tôi nên làm gì để giữ màu khi gọi lệnh bên ngoài bên trong vim?

EDIT: Để làm rõ câu hỏi của tôi , Đây là một câu hỏi về chính VIM , tôi thực sự KHÔNG hỏi làm thế nào để kích hoạt màu của "ls". Những gì tôi muốn biết là, nói chung là làm thế nào để hiển thị kết quả đầy màu sắc của TẤT CẢ các lệnh shell (miễn là chúng có kết quả đầy màu sắc).


2
Hoạt động tốt ở đây.
Ignacio Vazquez-Abrams

2
"Đây là một câu hỏi về chính VIM ..."
Ignacio Vazquez-Abrams

2
và vim là một trong những "công cụ phần mềm thường được các lập trình viên sử dụng" ...

1
Email cũng vậy. Không nhất thiết có nghĩa là "làm thế nào để tôi Thunderbird" có chủ đề ở đây.
Ignacio Vazquez-Abrams

2
Vim có ctags, thụt lề và hỗ trợ trực tiếp hơn nhiều cho lập trình. Email làm gì trực tiếp cho lập trình?
Jens

Câu trả lời:


5

CLI Vim hay GUI Vim?

Bạn không thể hiển thị đầu ra của :!lshoặc :!ls --colorhoặc bất kỳ lệnh bên ngoài nào khác trong chính CLI Vim vì đó là luồng đơn: Vim bị treo và $ ls --colorđược thực thi trong trình bao của bạn. Không có cách nào khác. Chà, bạn có thể đặt đầu ra của các lệnh bên ngoài vào bộ đệm hiện tại nhưng điều đó không giống nhau.

Trong GUI Vim, bạn chỉ có thể nhận được một vỏ giả hoàn toàn không thể hiển thị bất kỳ màu nào. Không có cách nào xung quanh đó cả.

Nếu bạn rất cần đầu ra màu từ các lệnh bên ngoài, bạn phải khởi chạy trình giả lập thiết bị đầu cuối bên ngoài với một cái gì đó giống như :!xterm & hoặc sử dụng một plugin như Conque Shell .


1
Tôi sẽ đề nghị một cái gì đó như tmux hoặc màn hình quá.
lucapette

Vâng, thực sự. Nhưng người hỏi khăng khăng rằng đó là câu hỏi về chính Vim. Tmux là tuyệt vời. Đăng nhập vào máy chủ từ xa thông qua SSH và sử dụng Vim được cấu hình tốt trong tmux / màn hình là một trải nghiệm thú vị đáng ngạc nhiên. Hoàn hảo để có được trong khu vực và ở đó.
romainl

@romainl cảm ơn bạn đã trả lời tuyệt vời của bạn. Tôi đã sử dụng gVim và tôi giả sử CLI vim cũng không thể hiển thị màu ... Với một số thử nghiệm, tôi thấy màu được hiển thị chính xác trong CLI vim của tôi.
CMinus

1

Bạn có thể :set shellcmdflag=-iclàm cho shell hoạt động tương tác, như dấu nhắc lệnh của bạn.


1

Bạn có thể tạo một chức năng trong .bashrc:

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

Xin lỗi vì lỗi đánh máy, nhưng tôi không hỏi cách hiển thị màu bằng lệnh "ls" - Tôi tò mò về cách giữ lại màu khi thực hiện các lệnh bên ngoài bằng vim. Tôi chỉ sử dụng "ls" làm ví dụ.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.