2012-12-13 8 views
7

私はVimの現在のパスを自動的に変更する方法は?

mvim ./path/to/my/project 

Vimは、このプロジェクトのディレクトリを開き、私のNERDTreeに、私はファイルを見ることができますが、私はいくつかのCLIコマンドを実行しようとすると、

:!touch some/file/in/my/project 

のようにそれは起こるのようなターミナルに何かを入力私は私のプロジェクトのディレクトリにファイルを作成したい場合は、私の現在のパスは私のユーザーのホームディレクトリ

であるように、私は

のように完全なパスを入力する必要があります

vimの起動後に何とか自動的にdirを変更できますか?

+0

可能重複[VIMでファイルの正しいパスを設定するには?](http://stackoverflow.com/questions/12022142/how-to-set-the-correct -path-for-a-file-in-vim) –

+0

私はそうは思わない、autochdirは私の問題を解決しない。 私はプロジェクトのルートにdirを変更したいだけです。 –

+0

':pwd'は、あなたがVimを呼び出したディレクトリであるはずです。 GVim/MacVimを起動したばかりの場合は '〜'を押します。 – romainl

答えて

4

私は私のvimrcでこれを使用します。

" Use %% on the command line to expand to the path of the current file 
cabbr <expr> %% expand('%:p:h') 
4

をあなたの特定のユースケースでは、あなたがVimEnterイベントで何かをフック試みることができます。たとえば、あなたのvimrcでこれを入れてみてください:

autocmd VimEnter * cd %:p:h 

を次に、あなたはfileがでているディレクトリに自動的:cd$ mvim path/to/my/project/some/fileのVimでVimを起動するときに、このために

をあなたがする必要がありますディレクトリで動作するように。自動コマンドに小さなロジックを追加する

autocmd VimEnter * exe 'cd '.(isdirectory(expand('%:p')) ? '%:p' : '%:p:h') 

あなた自身で改善することができます。

3

これを最もうまく解決する方法は、ご使用のケースによって異なります。私は部分的に:set autochdirになっていますが、作業ディレクトリをプロジェクトルートに設定したい場合は、ローカルvimrcプラグイン(localrc.vim - Enable configuration file of each directoryを使用)のいずれかを使用し、それぞれのプロジェクトルートにローカルの.vimrcファイルを作成します

:cd expand('<sfile>:p:h') 

である。次に、プロジェクト階層内のどのファイルを開いても、作業ディレクトリは常にプロジェクトルートに設定されます。

0

in_vimrc

au BufEnter * silent! lcd %:p:h 
関連する問題