project.vim にパス入力だけでツリーを作るスクリプトを追加した
project.vim を使った場合、\C でプロジェクトを自動生成してくれるけど、入力項目が多くてうざったいです。
ツリーにするパスだけを入力するようにしてみました。
\R で更新した場合ディレクトリを追加した時の更新は行なってくれないので、作るのが楽にこしたことはありません。
if !exists("*<SID>CreateAutoProject()") "<<< function! s:CreateAutoProject() let path = inputdialog('Enter the Absolute Path: ') if !isdirectory(glob(path)) echo path . ' is not a valid directory.' return end :Project let line = line('.') call <SID>DoEntryFromDir(1, line, path, path, path, '.', '*', '*', foldlevel(line), 0) endfunction endif ">>> command CreateAutoProject call <SID>CreateAutoProject() finish
project.vim の一番下の finish の上に貼り付ける。
:CreateAutoProject で起動で、 ~/work みたいにパスを追加するとツリーが生成されます。
nmap
vim script tips
vim script 修正するの死ぬほどめんどくさかったので、作業手順をメモっておきます。
もっと良い方法があればご教授お願いします(_ _)
https://sites.google.com/site/vimdocja/usr_41-html を参考に
mv ~/.vim/plugin/project.vim ~
cp ~/project.vim ~/work/vim
cd ~/work/vim
vim project.vim
一旦 .vim にある project.vim をホームディレクトリに移して project.vim を起動しないようにします。
project.vim は
"if exists('loaded_project') || &cp " finish "endif
ファイルの先頭にある多重読み込み防止スクリプトをコメントにします。
function! Test() :call <SID>DoToggleProject() :Project " ここで変更した関数を呼んだりする :call <SID>CreateEntriesFromDir(1) endfunction nmap <c-h> :source project.vim<CR>:call Test()<CR> finish
finish の前に再読み込みのマッピングをします。初回のみは :source project.vim をしないといけませんが次回からは Control + h を押すと自動的に読み込まれます。
Project のウィンドウを閉じないと変更が反映されないので DoToggleProject() で毎回閉じてます。
あとは project.vim 内の CreateEntriesFromDir や マッピング してる箇所に当たりをつけて弄ってみる。
function Test 内でメソッドを呼ぶ時はメソッド名の前に
みたいな感じでやってみたんですが、もっと良い方法がありそうな感じは凄いします(汗)