新しい開発環境として、VirtualBoxにCentOS7をminimalインストールしたのですが、なぜかviで「:syntax on」を叩いてもシンタックスハイライトが機能しませんでした。
ということで原因と解決策も含めて備忘録です。
原因
原因としては、minimalでインストールされるviがシンタックスハイライトに非対応ということでした。
お使いのviでの機能のサポート/非サポートは、「:version」のコマンドで分かります。サポートする機能には「+」、そうでない機能には「-」が付与されて表示されます。
Small version without GUI. Features included (+) or not (-): +acl -conceal -farsi -libcall -mouse_sgr -python3 -tag_old_static -vreplace -arabic -cryptv -file_in_path -linebreak -mouse_sysmouse -quickfix -tag_any_white +wildignore -autocmd -cscope -find_in_path -lispindent -mouse_urxvt -reltime -tcl -wildmenu -balloon_eval -cursorbind -float -listcmds -mouse_xterm -rightleft +terminfo +windows -browse -cursorshape -folding -localmap +multi_byte -ruby -termresponse +writebackup +builtin_terms -dialog -footer -lua -multi_lang -scrollbind -textobjects -X11 -byte_offset -diff +fork() -menu -mzscheme -signs -title -xfontset -cindent -digraphs -gettext -mksession -netbeans_intg -smartindent -toolbar -xim -clientserver -dnd -hangul_input -modify_fname -path_extra -sniff -user_commands -xsmp -clipboard -ebcdic +iconv -mouse -perl -startuptime -vertsplit -xterm_clipboard -cmdline_compl -emacs_tags -insert_expand -mouse_dec -persistent_undo -statusline -virtualedit -xterm_save +cmdline_hist -eval +jumplist -mouse_gpm -printer -sun_workshop +visual -xpm -cmdline_info -ex_extra -keymap -mouse_jsbterm -profile -syntax -visualextra -comments -extra_search -langmap -mouse_netterm -python -tag_binary -viminfo
これを見ると、「-syntax」となっているので、シンタックスハイライト機能は非サポート…。「Small version without GUI」とあるので最小構成としてあるようです。
解決策
機能サポートの有無はコンパイル時のオプションによって決まってしまうので、後から付け足しはできません。
かといってイチからコンパイルし直すのも面倒なので、次の手順でシンタックスハイライトをサポートしている拡張版vimを入れます。
# 拡張版vimのインストール yum install vim-enhanced # 古いviをリネームして退避 mv /bin/vi /bin/vim-tiny # 拡張版vimをviとして使えるようにリンク ln -s /usr/bin/vim /bin/vi
あらためて、「:version」コマンドを見てみましょう。
Huge 版 without GUI. 機能の一覧 有効(+)/無効(-) +acl +conceal +farsi +libcall +mouse_netterm +profile +syntax +visualextra +arabic +cryptv +file_in_path +linebreak +mouse_sgr +python/dyn +tag_binary +viminfo +autocmd +cscope +find_in_path +lispindent -mouse_sysmouse -python3 +tag_old_static +vreplace -balloon_eval +cursorbind +float +listcmds +mouse_urxvt +quickfix -tag_any_white +wildignore -browse +cursorshape +folding +localmap +mouse_xterm +reltime -tcl +wildmenu ++builtin_terms +dialog_con -footer -lua +multi_byte +rightleft +terminfo +windows +byte_offset +diff +fork() +menu +multi_lang +ruby/dyn +termresponse +writebackup +cindent +digraphs +gettext +mksession -mzscheme +scrollbind +textobjects -X11 -clientserver -dnd -hangul_input +modify_fname +netbeans_intg +signs +title -xfontset -clipboard -ebcdic +iconv +mouse +path_extra +smartindent -toolbar -xim +cmdline_compl +emacs_tags +insert_expand -mouseshape +perl -sniff +user_commands -xsmp +cmdline_hist +eval +jumplist +mouse_dec +persistent_undo +startuptime +vertsplit -xterm_clipboard +cmdline_info +ex_extra +keymap +mouse_gpm +postscript +statusline +virtualedit -xterm_save +comments +extra_search +langmap -mouse_jsbterm +printer -sun_workshop +visual -xpm
今度はちゃんと「+syntax」になっています。これでシンタックスハイライトが使えるようになりました。
ちなみに、シンタックスハイライトを常にONとしたい場合は、設定ファイル(~/.vimrc)に「syntax on」を追記すればOKです。