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

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

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
このエントリーをはてなブックマークに追加
はてなブックマーク - Hack #69: 簡単にカレントディレクトリを変更する
Share on Facebook
Post to Google Buzz
Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

Comments:1

s_hiiragi 12-02-21 (火) 13:34

execute ‘lcd’ . a:directory この行でエラーが出るので、恐らく’lcd ‘(lcdの後に空白を入れる)だと思います

:CD!として呼び出された場合 if a:bang == ”となっているので「:CD(!なし)で呼び出した場合に、~」でしょうか

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://vim-users.jp/2009/09/hack69/trackback/
Listed below are links to weblogs that reference
Hack #69: 簡単にカレントディレクトリを変更する from Vim-users.jp

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

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top