koKekkoh
@koKekkoh (コケッコゥ)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【cygwin/vim】script.shの1行目がscript.plと同じように水色になって欲しい。(解決)

自己解決(2020-08-24追記)

*.sh のファイルタイプを zsh とすることで解決しました。

現象

cygwin+vimの環境(恐らくcygwin環境でなくても、vimであれば同様の現象と予想)で、bashのスクリプトを編集すると「#!/usr/bin/bash」がコメント色になります。
対して、Perlやzshのスクリプトは「#!/usr/bin/perl」「#!usr/bin/zh」の行が、コメント行とは異なる色(水色)になります。

希望

  • bashのスクリプトでも1行目の「#!/usr/bin/bash」を水色にしたい。
  • とりあえずは、~/.vimsrcに「.shなら1行目の"#!"は水色」で
    • ダメなら「1行目の"#!"は水色」
      • それもダメなら「とにかく1行目は水色」でも…
  • 理想は「~/vim/」以下に「sh.vim」をおいてカッコ良くやりたい。
  • /usr/share/vim/vim92 以下のファイルをイジるのはなし

質問

  • どうすればいいのでしょうか?

現在までに確認していること

  • 動作的なことで分かったこと
    • 中身がbashであっても、拡張子が「.zsh」「.pl」だと1行目は水色になる。
    • 「#」まではコメント色「#!」となると水色になる。
  • /usr/share/vim/vim82について
    • script.vimが関わっている
    • syntax/sh.vim,bash.vim,zsh.vim,perl.vimが関わっている
  • syntax/zsh.vimについて
    • 「hi def link」で始まる行がキーワードの設定
      • どれが「#!」に関わるのか?
  • syntax/perl.vimについて
    • 「PreProc」が「#!」に関わっているようだ。
    • 1行目に限定して「#!」をマッチさせるロジックが分からない。

~/.vimrc(2020-08-24追記)

現在の ~/.vimrc です。colorscheme も設定しました。

set nocompatible
set fileencoding=utf-8

set ruler
set number
set autoindent
set cursorline
set cursorlineopt=number,line

set backspace=indent,eol,start

syntax on
set hlsearch
set t_Co=256

set listchars=tab:>-,nbsp:.,trail:_

"色の設定
colorscheme slate
highlight LineNr ctermfg=darkgray
autocmd SourcePost * highlight Search  ctermfg=red
autocmd SourcePost * highlight Search  ctermbg=darkblue
autocmd SourcePost * highlight Comment ctermfg=blue
autocmd BufRead,BufNewFile *.sh    set filetype=zsh
autocmd BufRead,BufNewFile *.html  set filetype=htmldjango
autocmd BufRead,BufNewFile *.raw   set filetype=html
autocmd BufRead,BufNewFile *.sed   set filetype=html
1

1Answer

カラースキームを変更するのが手っ取り早いかと思います。

*.shだけ色を変更したい場合は以下のように.vimrcに書き込めばいいと思います。

:syntax on
autocmd BufNewFile,BufRead *.sh :colorscheme ron

他のカラースキームが欲しい場合や自分で配色を作りたい場合は以下の記事を参考にしてください。

vimのカラースキームの設定・編集方法(初心者〜上級者)

1Like

Comments

  1. @koKekkoh

    Questioner

    これはこれでいいですね。ありがとうございます。

Your answer might help someone💌