Vimでは、バッファを開いているときに、ファイルと同じディレクトリに別のファイルをロードする必要があることがよくありますが、通常はcd
をそのファイルにロードしないため、pwd
は親フォルダなので、毎回パスを再入力する必要があります。これに対するショートカットはありますか?または、pwdをファイルが存在するディレクトリに変更する方法はありますか?
例:
cd /src
vi lib/foo/file.js
lib/fooには2つのファイルがあります:file.js
およびfile2.js
viで:
:e file2.js # doesn't work
新しいバージョンのvimにはautochdirコマンドが組み込まれていますが、そうでない場合は、セットアップのようにBufEnterにフォールバックできます。
" set vim to chdir for each file
if exists('+autochdir')
set autochdir
else
autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /
endif
:Exの略:Exploreはあなたが要求したことを正確に実行します。
.vimrc
に次の3行があります。
map ,e :e <C-R>=expand("%:p:h") . "/" <CR>
map ,t :tabe <C-R>=expand("%:p:h") . "/" <CR>
map ,s :split <C-R>=expand("%:p:h") . "/" <CR>
これで、このバッファで,e <some-file>
が開きます。 ,t
と,s
は同じことを行いますが、新しいタブ/分割ウィンドウで行います。
簡単なアイデアは、autochdir設定を使用することです。 .vimrcでこれを試してください:
set autochdir
これにより、vimの作業ディレクトリが開いたファイルのディレクトリに変更されます。
注:この機能が追加されたバージョンがわかりません。これを機能させるためにvim6から7.2にアップデートしました。
次のことを試してください。
:e %:p:h/file2.js
この行をvimrc
構成に追加します
autocmd BufEnter * cd %:p:h
%現在のファイル名
:pフルパスに展開
:hヘッド(最後のパスコンポーネントが削除されました)
見る :help expand
詳細については。
これを.vimrcファイルに入れます。これにより、現在のディレクトリがバッファ内のファイルに変更されます。これにより、バッファの現在のディレクトリが設定され、バッファを切り替えると更新されます。
autocmd BufEnter * lcd %:p:h
したがって、vimには変数 'path'を使用する:findコマンドがあります。ディレクトリ「src」の下にあるすべてのソースなど、コードに一貫したディレクトリ構造がある場合は、それを「path」変数に追加するだけです。次に、:find foo.jsを実行すると、現在の場所とパス変数にリストされているフォルダーの両方が検索されます。これは基本的に、bashまたは他のシェルがPATH変数を使用して、実行する適切なバイナリを見つける方法をエミュレートします。
あなたはおそらくvimに入ったらあなたが使うことができることを知っているでしょう
:cd lib/foo
lib/fooに変更します。
一方、現在編集しているファイルのディレクトリに移動するには、
:cd %:p:h
いつでも使えます
:pwd
現在の作業ディレクトリを確認します。
もちろん、編集しているファイルを忘れた場合は、ctrl-gを押してください。
「ショートカット」の面で、:Sex
コマンドを調べましたか?これにより、ファイルブラウザが分割して開き、他のファイルを簡単に開くことができます。 :Sex
デフォルトは現在のバッファのディレクトリです。私がそう言うなら、かなり気の利いた機能。
簡単にアクセスできるように;o
にバインドします。
map ;o :Sex <CR>
分割を作成する代わりに現在のバッファに保持する場合は、:Ex
を使用することもできます。
別のオプションは次のとおりです。
:e <Tab>
これにより、作業ディレクトリ内のフォルダが循環します。