vim内で外部コマンドを実行するときに色を維持するにはどうすればよいですか?


12

たとえば、コマンドをls --colorシェルで実行すると、カラフルな結果が表示されます。しかし、:!ls --colorvim内で呼び出すと、すべての色情報が消えてしまいます。

vim内で外部コマンドを呼び出すときに色を維持するにはどうすればよいですか?

編集:私の質問を明確にするために、これはVIM自体に関する質問です、私は実際には「ls」の色を有効にする方法を尋ねていません。私が知りたいのは、すべてのシェルコマンドのカラフルな結果を表示できるようにする方法です(カラフルな結果がある限り)。


2
ここで問題なく動作します。
イグナシオバスケスエイブラムス

2
「これはVIM自体に関する質問です...」
Ignacio Vazquez-Abrams

2
vimは、「プログラマーが一般的に使用するソフトウェアツール」の1つです...

1
メールです。ここでは、「Thunderbirdの操作方法」が話題になっているとは限りません。
Ignacio Vazquez-Abrams

2
Vimにはctags、インデント、およびプログラミングに対するはるかに直接的なサポートがあります。メールはプログラミングのために直接何をしますか?
イェンス

回答:


5

CLI VimまたはGUI Vim?

あなたはの出力表示できない:!lsか、:!ls --colorそれはシングルスレッドだからか、CLIのVim自体に他の外部コマンドを:Vimは中断され、$ ls --colorあなたのシェルで実行されます。それを回避する方法はありません。まあ、あなたは現在のバッファに外部コマンドの出力を置くことができますが、それは同じことではありません。

GUI Vimでは、まったく色を表示できない疑似シェルしか取得できません。それを回避する方法もありません。

外部コマンドからのカラー出力が必要な場合は、外部ターミナルエミュレーターを起動するか、Conque Shellなどのプラグインを使用する:!xterm & 必要があります。


1
私はtmuxやscreenのようなものも提案します。
lucapette 2012

はい、そうです。しかし、質問者はそれがVim自体に関する質問であると主張しました。Tmuxは素晴らしいです。SSH経由でリモートサーバーにログインし、tmux / screen内で適切に構成されたVimを使用することは、驚くほど楽しい体験です。ゾーンに入って滞在するのに最適です。
romainl 2012

@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」を使用しました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.