vimで強調表示:コメント区切り記号と特殊文字列を使用して行を区切ります。
#$
HPCクラスター用のスクリプトと同じ場合、SGE、TORQUE、またはSlurmを使用しているときにコメント行は#で表されますが、グリッドコマンドはまたはまたはで#PBS
表されるシェルスクリプト(bashなど)を使用できます#SBATCH
。
#SomeString
Bashで使用されているのと同じハイライトを維持しながら、コメントとして扱われない簡単な方法はありますか?
答え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
上記のコードでそのフラグを確認するようにします。