vimで強調表示:コメント区切り記号と特殊文字列を使用して行を区切ります。

vimで強調表示:コメント区切り記号と特殊文字列を使用して行を区切ります。

vimで強調表示:コメント区切り記号と特殊文字列を使用して行を区切ります。

#$HPCクラスター用のスクリプトと同じ場合、SGE、TORQUE、またはSlurmを使用しているときにコメント行は#で表されますが、グリッドコマンドはまたはまたはで#PBS表されるシェルスクリプト(bashなど)を使用できます#SBATCH

#SomeStringBashで使用されているのと同じハイライトを維持しながら、コメントとして扱われない簡単な方法はありますか?

答え1

まず、シェル構文スクリプトでコメント定義を確認します。

:syn list shComment
--- Syntax items ---
shComment      xxx match /^\s*\zs#.*$/  contains=@shCommentGroup
                match /\s\zs#.*$/  contains=@shCommentGroup
                match /#.*$/  contained contains=@shCommentGroup
                links to Comment

拡張構文クラスタ

ここでオーバーライドする必要があるコメントモードを確認できます。しかし、待って!この構文スクリプトは、次のように拡張メカニズムを提供します。:help :syn-cluster;これcontains=@shCommentGroup

syn match shHPC "PBS" contained

これは強調されますPBS どこかにコメントに。他の内容に従うことができる場合は、.*$パターンに追加してください。PBSキーワードがすぐに続く必要がある場合#は、肯定的な逆方向の主張:

syn match shHPC "#\@<=PBS" contained

:syn matchコマンドを追加するか、正規表現ブランチを使用して他のすべてのキーワードを使用できます"#\@<=\(PBS\|SBATCH\|...\)"

最後に、新しい構文グループは注釈用の構文クラスタに含まれ、ユーザーが表示できるように強調表示する必要があります。

syn cluster shCommentGroup add=shHPC
hi link shHPC PreProc

オーバーライド構文マッチングの定義

または、クラスタをスキップしてコメント構文をオーバーライドすることもできます。たとえば、特殊キーワードは行の先頭にのみ表示されていますが、今では Bash コマンドの後に表示されます。または、#クラスター方法が元の強調表示を維持しているという事実に耐えられない場合。

syn match shHPC "^\s*\zs#PBS"
hi link shHPC PreProc

活性化

これらのコマンドは組み込み構文を拡張するため、そのコマンドの後に実行する必要があります。その場所は、~/.vim/after/syntax/sh.vim特定のプロジェクトに対してのみ条件付きで有効にしたい場合は、次のように書くことができます。ファイルタイプの検出たとえば、フラグ変数を設定し、b:is_HPC上記のコードでそのフラグを確認するようにします。

関連情報