2017-02-25 14 views
1

vimコマンドラインに次のように入力します::read !readlink {somedir} 、出力はbashに出力されます。 実際には、私が達成しようとしているのは、vimでファイルを編集しているときにファイルの絶対パスを取得し、その中には何のタイプミスもしないことです。VIM内のいくつかのbashコマンドは、VIMではなくbashに出力を送信します

一方、私が使用するたびに::read !ls、私は現在使用しているvimバッファに出力を表示します。

なぜこのようなことが起こりますか、どうすればよいですか? ありがとう!あなたは絶対パスを使用したい場合は

+0

などのファンクションキーに割り当て?あなたは現在のファイルの完全なパスを見つけますか?( ':!echo"% "'によって与えられた相対パスではなく)あなたのファイルに(ヘッダーの一種として、ヘッダーの日付も)?または、すべての種類のファイルを参照したいですか?これに 'locate'を使用できますか? –

+0

私はすべての種類のファイルやディレクトリの完全なパスを取得したい。それは時々私が何かを構成しているときにファイルやディレクトリへの絶対パスを与えなければならないし、パスをタイプするときに間違いをする可能性があるからです。間にdirがあります。 – ZB1900

答えて

1

:標準エラー出力に問題を与えているとき

:read ! realpath directory-name 
+0

さようなら!それは動作します、ありがとう! – ZB1900

+1

途中で私は誤ってreadlinkを使用していることに気付きました。私はそれを正しく使用する場合vimの出力(この場合は絶対パス)もstdoutが使用されるように出力します。エラーの場合は、stderrを使用しますが、stderは現在のvimバッファに "チャネル"されませんが、vimを起動したbashには渡されません。 – ZB1900

+0

それは答えを受け入れるときに動作します!あなたができる最小限! – Sabrina

0

、あなたは2>&1を使用することができます。
コマンドラインはすべてのreq'sで長引くことになります。これを頻繁に必要とするときは、別のアプローチをとってください。
まず、要件を満たす出力として正しいパスを与えるスクリプトを作成します。 スクリプトは、パス内のfind、locate、readlink、またはいくつかのAI解決エラーを使用できます。その後、あなたは

:r !myscript path 

を使用することができますそして、あなたは本当のことが多いこれを使用する場合、あなたは正確に何をしたいですか

nnoremap <F1> :r !myscript 

"Off topic: I like the next one for testing scripts 
nnoremap <F9> :w<Enter>:!%:p<Enter> 
関連する問題