Bagaimana saya bisa menjaga warna ketika saya menjalankan perintah eksternal di dalam vim?


12

Misalnya, untuk perintah ls --colormenampilkan hasil yang berwarna ketika dieksekusi di shell. Namun, ketika saya memanggil :!ls --colorvim dalam, semua informasi warna hilang.

Apa yang harus saya lakukan untuk menjaga warna saat memanggil perintah eksternal di dalam vim?

EDIT: Untuk memperjelas pertanyaan saya , Ini adalah pertanyaan tentang VIM itu sendiri, saya TIDAK benar-benar bertanya bagaimana cara mengaktifkan "ls" warna. Yang ingin saya ketahui adalah, umumnya cara mengaktifkan tampilan hasil warna-warni dari SEMUA perintah shell (selama mereka memiliki hasil warna-warni).


2
Bekerja dengan baik di sini.
Ignacio Vazquez-Abrams

2
"Ini adalah pertanyaan tentang VIM itu sendiri ..."
Ignacio Vazquez-Abrams

2
dan vim adalah salah satu "alat perangkat lunak yang biasa digunakan oleh pemrogram" ...

1
Jadi, email. Tidak harus berarti "bagaimana saya Thunderbird" ada di topik di sini.
Ignacio Vazquez-Abrams

2
Vim memiliki ctag, indent, dan banyak lagi dukungan langsung untuk pemrograman. Email melakukan apa secara langsung untuk pemrograman?
Jens

Jawaban:


5

CLI Vim atau GUI Vim?

Anda tidak dapat menampilkan output dari :!lsatau :!ls --coloratau perintah eksternal lainnya di CLI Vim itu sendiri karena itu single threaded: Vim ditangguhkan dan $ ls --colordieksekusi di shell Anda. Tidak ada jalan lain untuk itu. Nah, Anda dapat menempatkan output dari perintah eksternal di buffer saat ini tetapi itu bukan hal yang sama.

Di GUI Vim, Anda hanya bisa mendapatkan pseudo-shell yang benar-benar tidak dapat menampilkan warna apa pun. Tidak ada jalan lain untuk itu.

Jika Anda sangat membutuhkan keluaran berwarna dari perintah eksternal Anda harus meluncurkan emulator terminal eksternal dengan sesuatu seperti :!xterm & atau menggunakan plugin seperti Conque Shell .


1
Saya akan menyarankan sesuatu seperti tmux atau layar juga.
lucapette

Ya memang. Tetapi si penanya bersikeras bahwa itu adalah pertanyaan tentang Vim itu sendiri. Tmux bagus. Masuk ke server jauh melalui SSH dan menggunakan Vim yang dikonfigurasi dengan baik dalam tmux / layar adalah pengalaman yang sangat menyenangkan. Sempurna untuk masuk zona dan tinggal di sana.
romainl

@romainl terima kasih atas jawaban Anda yang luar biasa. Saya menggunakan gVim dan saya salah mengasumsikan CLI vim juga tidak dapat menampilkan warna ... Dengan beberapa percobaan saya menemukan warna ditampilkan dengan benar di vim CLI saya.
CMinus

1

Anda dapat :set shellcmdflag=-icmembuat shell berperilaku secara interaktif, seperti command prompt Anda.


1

Anda dapat membuat fungsi di .bashrc:

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

Maaf atas kesalahan ketiknya, tapi saya tidak bertanya bagaimana menampilkan warna dengan perintah "ls" - Saya ingin tahu tentang bagaimana mempertahankan warna ketika menjalankan perintah eksternal dengan vim. Saya hanya menggunakan "ls" sebagai contoh.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.