.vimrc
、配色が存在する場合にのみそれをロードすることは可能ですか?
try-catchで:colorscheme
を Randyが行った として使用するだけで、それが存在する場合にそれをロードしたい場合は十分かもしれません。それ以外のことをします。 elseの部分に興味がない場合は、単純な:silent! colorscheme
で十分です。
それ以外の場合は、 globpath()
が最適です。次に、本当に必要な場合は、filereadable()
で返される各パスを確認できます。
" {rtp}/autoload/has.vim
function! has#colorscheme(name) abort
let pat = 'colors/'.a:name.'.vim'
return !empty(globpath(&rtp, pat))
endfunction
" .vimrc
if has#colorscheme('desert')
...
編集:filereadable($HOME.'/.vim/colors/'.name.'.vim')
は単純に見え、決定的に魅力的ですが、探しているカラースキームが他の場所にある場合、これでは十分ではありません。通常、プラグインマネージャーのおかげで別のディレクトリにインストールされている場合。その場合、唯一の信頼できる方法は、vimをチェックインすることです 'runtimepath'
(別名'rtp'
)。したがって、globpath()
。 :colorscheme name
コマンドは{rtp}/colors/{name}.vim
を検索することに注意してください。
@eckesの回答の代わりに、カラースキームをロードして、エラーが存在しない場合はエラーに対処することもできます。
try
colorscheme mayormaynotexist
catch /^Vim\%((\a\+)\)\=:E185/
" deal with it
endtry
filereadable
関数を使用して、配色(schemename
など)が存在するかどうかを確認できます。~/vimfiles/colors
で1回確認します(Win32、Unixの場合は~/.vim/colors/
)および$VIMRUNTIME/colors/
の下に1回:
if filereadable("/path/to/schemename.vim")
colo schemename
endif
私の方法は似ています、
if filereadable( expand("$HOME/.vim/colors/railscast.vim") )
colorscheme railscast
endif
これは、パス全体をハードコーディングするよりも少し堅牢です。
これは、.vimrc
ファイルにあるワットです。
if filereadable( expand("$HOME/.vim/colors/sublimemonokai.vim") )
colorscheme sublimemonokai "https://github.com/ErichDonGubler/vim-sublime-monokai
" vim-sublime-monokai only support 256 colours in terminal. If you are using a terminal which support truecolor like iterm2, enable the GUI color
set termguicolors
" Otherwise, use below setting to activate the 256 color in terminal
set t_Co=256
else
echom "The sublimemonokai.vim were not found to be used as colorscheme. elflord will be set for the timebeing..."
colorscheme elflord
endif
基本的に、私が好きな配色がマシンに存在するかどうかを確認します。含まれている場合は、それを選択し、それに必要なすべての設定を適用します。それ以外の場合は、vimに付属している適切な配色を選択します。
他の回答を見ると、私の回答は@ user427390の回答と端役を共有しており、追加のelse条件があります。
次のリンクは、自分の.vimrc
およびvim関連ファイルのスクリプト作成に大いに役立ちました: http://learnvimscriptthehardway.stevelosh.com/
通常、お気に入りが利用できない場合は、フォールバックを使用してお気に入りのcolorscheme
を使用します。ネストされたtry
は、これを機能させます。
try
colorscheme solarized
catch
try
colorscheme peachpuff
catch
endtry
endtry
どちらのcolorscheme
も使用できない場合は、デフォルトのものがロードされます(システム上にあるものは何でも)。カラースキームの一方または両方が使用できない場合、エラーは表示されません。好みのcolorscheme
を最初に置きます。
また、引数のないcatch
は、エラーをキャッチします。これは、さまざまなエラーメッセージを表示するさまざまなロケールを扱っている場合に便利です。