呼び出された場所へのVIM変更パス


0

vimの作業ディレクトリを現在作業中のファイルに変更するのが本当に好きです。このために私は私のvimrcで使用します: autocmd BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]*://" | lcd %:p:h | endif

私が気に入っているのはgF、vimで(*)を使用して、カーソルの下のファイルを新しいバッファーで開くことです。

ただし、この組み合わせは、私の好みのワークフローで問題を引き起こします。

  1. プロジェクト内のすべての「foo」を検索したいので、シェルを使用cdしてフォルダーに移動しpath/to/project/src、実行しますgrep -Ern 'foo' * | vim -。引数のために、vimで開かれる出力は次のとおりです。 a/file1.c:42: foo b/file2.c:13: foo
  2. ここで、ヒットを調べたいfile1ので、そこにgF飛び込みます。このアクションにより、作業ディレクトリが変更されますpath/to/project/src/a

  3. 私はの出力を持つタブに戻る場合はgrep、作業ディレクトリにとどまるpath/to/project/src/aので、%:p:h明らかに標準入力から読み込み、何かのためにパスを解決することはできません。

  4. 問題:相対パスが間違っているため、file2viaにジャンプできなくgFなりました。

vimの作業ディレクトリを、バッファに切り替えたときに呼び出された場所に自動的に変更するとよいでしょう。この例では、これは、grepバッファに切り替えるときに作業ディレクトリがになることを意味しますpath/to/project/src

これを達成する方法についてのアイデアに感謝します。

(*)完全開示:spf-13 vimを使用しますが、基本的な問題はvim全般に適用されるはずです。


実行できgrep -Ern 'foo' $PWD/* | vim -ます。Grepはフルパスを出力し、vimは現在のディレクトリに関係なくファイルにジャンプします。
ザボイカンプラ18年

回避策をありがとう!VIMを通して真の解決策は、しかし、まだ:)いただければ幸い
真剣に

回答:


0
  • の代わりに、:autocmd単にで使用でき:set autochdirます~/.vimrc。Vimには、多くのバージョンからこの機能が組み込まれています。
  • grep外部で使用する代わりに、組み込み:grep(または:vimgrep)コマンドを試してください。結果は、クイックフィックスリストに入力されます。これの良い点は、作業ディレクトリの変更にパスが自動的に適応されることです。

:grepそして、quickfixリストを使用することは、実際にはかなり適切なソリューションです。そのことを知りませんでした。THX。
真剣に
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.