Linux

CentOSのviでシンタックスハイライトを使えるようにする

新しい開発環境として、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です。

関連記事

C言語 自作物 Linux プログラミング

wordleもどきのCUIアプリをつくってみた

最近、wordleという英単語当てゲームで遊んでいます。シンプルなゲームながら、通勤時間の暇つぶしや友人とのスコア比べなど意外と中毒性があり面白いです。 普通に英単語の勉強にもなるので、もっとたくさん ...

RaspberryPi Linux

Raspberry Pi4+Ubuntu ServerでGitLabを動かしてみる

お仕事でGitLabに触れる機会があったので、学習用に自宅にもGitLabが欲しくなりました。 手元にあるRaspberry Pi4+Dockerならお手軽に立ち上げられるはずと着手したものの、意外と ...

Flutter プログラミング

【Flutter】アプリ内の設定値を実装する方法

アプリ内で独自の設定を作る場合、そのデータを保持する方法を考える必要があります。 SQL、テキストファイルなど選択肢は多々ありますが、shared_preferencesというパッケージを使えば簡単に ...

RaspberryPi Linux

YoctoでRaspberryPi4のイメージをビルドしてみた

昨今、様々なデバイスでLinuxが動くようになっている中、組み込みLinuxのデファクトスタンダードとなりつつあるのが「Yocto」と呼ばれるビルドシステムです。 組み込みの現場ではその名前を聞くこと ...

C++ 自作物

言語処理系をつくろう(第7回):比較演算子を実装する

自作の言語処理系開発日記の第7回です。前回までで変数の実装が終わったので、ここからはいよいよ制御構文を実装…と思ったのですが、制御のためには比較演算子を実装する必要がありました。 ということで、今回は ...

Ryo Yoneyama

とある会社でソフトウェアエンジニアをしています。技術的な備忘録を中心にまとめてます。ネタがあれば日記も書きます。

    -Linux