パイプを使用してVimでファイルを開く方法


14

私はlocate非常に頻繁にコマンドを使用するようになります。

したがって、次のコマンドを実行すると。

locate updatedb | head -1

その後、それは私に与えます O/p

/usr/updatedb.conf

そのファイルを直接開くことができるようなコマンドがあるのだろうか?

私はこのようなことを望んでいます。

locate updatedb | head -1 | vim

回答:


21

ほぼ完了です:

$ locate updatedb | head -1 | xargs vim

時々(特定の端末の下で)編集後に端末をリセットする必要があります。

$ reset

2
おそらくほとんどのバージョンはlocate持っている-l/ --limit/ -nあなたが必要としないので、オプションhead -1locate -n 1 updatedb | xargs vim
ドミトリーアレク

1
この端末の破損はなぜ発生しますか?それを避ける方法はありますか?
ジャコボデベラ14

16

インタラクティブなエディターとして、Vimはstdinとstdoutの両方を必要とするため、パイプ内で使用することには問題があり、Vimはこれについて警告します。単一ファイルの場合、プロセス置換はこれを簡単に解決します。

vim "$(locate updatedb | head -1)"

バックティックを使用することもでき、それはVim自体の内部でも機能します。

:edit `locate updatedb | head -1`

これは、スペースを含む文字列でも機能します。これは、「バージョン2-final.csv」などのファイル名に適しています。
アレックスムーアニエミ

0

私はこれが悪い解決策であることを知っていますが、.bashrcでエイリアスを作成するためにこれを使用しました:

locate updatedb  > /tmp/vimForTempDontTouch && vim /tmp/vimForTempDontTouch

欠点:い

利点:ターミナルに副作用がない

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