vim
ディレクトリを次のように再編成したいと思います。
- dotfiles
|- vim
| |- config
| | |- global
| | | |- basic.vim
| | | |...
| | |- plugins
| | | |- ctrl-p.vim
| | | |...
| | |- functions
| | | |...
| | |...
| |- bootstrap.vimrc
$HOME/.vimrc
:
if isdirectory(expand('$HOME/dotfiles/vim'))
source $HOME/dotfiles/vim/bootstrap.vimrc
endif
私の質問は、すべてのVim設定ファイルをglobal
、plugins
、functions
フォルダーに含める方法です。
私はこのような関数を見つけます:
function! SourceConfig()
let file_list = split(globpath('$HOME/dotfiles/vim/', '.vim'), '\n')
for file in file_list
execute('source '.file)
endfor
endfunction
call sourceConfig()
しかし、指定されたロードフォルダーに従って、funcを変更する方法、globpath
をarray
などに変更したいと思います。
let $path=[global, plugins, functions] // this will be source files in turn.
function! SourceConfig()
let file_list = split(globpath($path, '.vim'), '\n')
for file in file_list
execute('source '.file)
endfor
endfunction
call sourceConfig()
Before/pluginとafter/pluginを使用しますか?
globpath()
はディレクトリのコンマ区切りのリストを取得するため、次のように場所を作成できます(Vimscriptにあまり精通していないように見えるため、これは複製を使用して原始的な方法で行っています)。
function! sourceConfig()
let path = $HOME . '/dotfiles/vim/config/global'
let path .= ',' . $HOME . '/dotfiles/vim/config/plugins'
let path .= ',' . $HOME . '/dotfiles/vim/config/functions'
次に、このリストを渡してスクリプトファイルのリストを生成し、それをソースにすることができます(構文が間違っていたため、適切にエスケープすることをお勧めします)。
let file_list = split(globpath(path, '*.vim'), '\n')
for file in file_list
execute 'source' fnameescape(file)
endfor
endfunction
その再編成の動機については言及していませんが、私はデフォルトの構成レイアウトに固執することをお勧めします、「すべて.vimの下」または「プラグインごとの個別のバンドルディレクトリ」のいずれかです。
たとえば、リストされているアプローチはftpluginsまたはautoloadを処理しません。あなたのプラグインのいくつかは持っている/持っていると確信しています。