質問: シェルスクリプトを勉強中なのですが、()で囲んでサブシェルにした場合、()内のハイライトが単色になってしまいます。サブシェル内でも通常通り、もしくはそれに近いかもう少し細かくハイライトする方法はありませんか? filetype は sh となっています。カラースキームは molokai を使用していて、vimはgvimよりも端末内で使用することが多いです。バージョンは7.4です。 そもそも、molokaiの色分けがあまり細かくないような気がするのでお勧めがあれば教えていただけるとありがたいです。色々試した末に、結局molokaiを使い続けているという状況です。 カラースキームは背景が黒っぽく、色分けが細かいものが好きですが、色分けが細かければ背景色にはそこまでこだわりません。 どういった方法でも構わないので、サブシェルでの処理もハイライトする設定を教えてください。よろしくお願いします。 #### 修正・追記 修正依頼ありがとうございます。気づいていなかったので助かりました。いくつか試してみたところ、色分けされるものとされないものがありました。 ``` aaa() ( # 水色になる ls -l vim emacs # ピンクになる pwd cd ) ``` ピンクになる方は組み込みのコマンドだからですかね?それ以外がすべて水色になります。{}でくくっているときは例えば ls -l は ls が白、 -l は水色になっているのですが、()に入れるとls -l 全体が水色となります。また、コメントも水色になってしまいます。
回答: カラースキームの問題ではなくシンタックスファイル ($VIMRUNTIME/syntax/sh.vim) の仕様です。 `let g:is_kornshell = 1`, `let g:is_posix = 1`, `let g:is_bash = 1` のどれかを vimrc に追記してください。 `:help ft-sh-syntax` の項に詳しく書いてあります。 vim, emacs もハイライトしたければ、少し雑ですが ``` autocmd vimrc FileType sh syn keyword vim emacs ``` と vimrc に書くなどしてキーワードを追加する必要があると思います。`syntax on` (あるいは `syntax enable) より後に書いてください。キーワードを追加するのはもう少しいい方法があるかもしれません。