vim-users.jp

Hack #69: 簡単にカレントディレクトリを変更する

Posted at 2009/09/08
このエントリーをはてなブックマークに追加

Vimは独自のカレントディレクトリを持っていて、タグファイルを参照するときにはカレントディレクトリにあるタグファイルを利用します。

'autochdir'の問題点

Vimには'autochdir'というオプションがあり、バッファを移動したとき、自動的にカレントディレクトリを変更することができます。しかし、このオプションはお薦めできません。なぜならば、タグジャンプでバッファを移動したときにもカレントディレクトリが変更されてしまい、タグファイルを辿れなくなってしまうからです。カレントディレクトリの移動は手動で行うようにしましょう。

カレントディレクトリ移動のためのキーマッピングを定義する

とはいえ、いちいちcdコマンドを入力するのは大変です。カレントディレクトリ移動はほとんどの場合、Vimで開いているファイルと同じディレクトリに移動したいことが多いです。よって単純なコマンドを作り、それに専用のキーマッピングを割り当てると便利でしょう。私は次のように設定しています。
command! -nargs=? -complete=dir -bang CD  call s:ChangeCurrentDir('<args>', '<bang>')
function! s:ChangeCurrentDir(directory, bang)
    if a:directory == ''
        lcd %:p:h
    else
        execute 'lcd' . a:directory
    endif

    if a:bang == ''
        pwd
    endif
endfunction

" Change current directory.
nnoremap <silent> <Space>cd :<C-u>CD<CR>
簡単に解説すると、CDというコマンドを定義し、<Space>cdに割り当てています。コマンドが引数なしで呼び出されたときは、現在開いているファイルと同じディレクトリに移動し、そうでない場合は引数のディレクトリに移動します。:CD!として呼び出された場合、移動先のカレントディレクトリを表示し、どこに移動したのかを分かり易くしています。

Shougo

もどる
blog comments powered by Disqus