web-dev-qa-db-ja.com

カスタムvimハイライト

私は現在いくつかのxmlを編集していて、戻ってくることについていくつかのコメントを残しています。このような

<!-- Question: bla bla -->

私は現在vimで編集していますが、コードを簡単に調べて、見る必要のあるすべての場所を見つけることができるように、vimで今すぐ質問を強調表示したいと思います。 vimrcに何かを追加する必要があることはわかっていますが、間違ったものを検索している可能性があると思います。

更新

これを.vimrcに入れてみましたが、効果がありませんでした。

syn keyword JakeAnnotation      Question

hi JakeAnnotation gui=bold term=bold cterm=bold

アップデート2

実際、これを行うと、以前に行ったことが何らかの効果をもたらしたことがわかります。

:hi

強調表示されているすべてのものが表示され、エントリの1つは次のとおりです。

JakeAnnotation xxx term=bold cterm=bold ctermbg=6

そしてxxxは正しくフォーマットされています

これは、私が質問を適切に定義していないことを私に信じさせます。質問はそれ自体で一列に並ぶ必要がありますか?

アップデート3

わかりました ユーザー22303の投稿 私はこれを機能させています:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/

ただし、ファイルごとに一致できるのは1つだけだと思います。私がこれをするとき:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/
highlight MyRelook cterm=bold term=bold ctermbg=blue ctermfg=black
match MyRelook /Another look/

最初のものは動作を停止します。 (しかし、2番目のものは機能します)。

12

私たちはあなたに完全に正しくないいくつかの答えを与えてきたと思います。これが私が自分のマシンでテストしたことを試すためのものです。

まず、独自の新しいハイライトグループを作成します。

:highlight MyQuestions guifg=red guibg=green

ここで、パターンが一致するたびにハイライトグループが存在することを指定します。

:syntax match MyQuestions /Question/

これで、そのテキストが含まれる各行に「質問」というテキストのハイライトが表示され始めます。行全体を表示するように展開するには、次のように、行全体に一致するワイルドカードを持つように検索テキストを変更します。

:syntax match MyQuestions /.*Question.*/

10
user22303

探しているファイルは「構文」ファイルです。 /usr/local/share/vim/syntax/または/usr/share/vim/syntax/を調べてみてください。必要なファイルはxml.vimです。

最も簡単なことは、次の行を見つけることです。

syn keyword xmlTodo         contained TODO FIXME XXX

次のように変更します。

syn keyword xmlTodo         contained TODO FIXME XXX Question

これにより、テキストQuestionを含むコメントに「Todo」ハイライトが追加されます。

これを(これまでに)使用する場合は、xml.vimをローカルの~/.vim/syntaxにコピーして、vimへの変更によってカスタム構文ファイルが上書きされないようにすることをお勧めします。

更新

anyファイルで同様の(一種の)機能が必要な場合は、「goto」コマンドを使用します。これは、あなたがイライラすると言ったhlsearchのようなものだと認めます。

編集中にカーソルがWordにある場合は、Gdと入力してファイル内の現在のポイントから検索するか、Gdと入力して最初から検索します。現在の単語と一致するファイル内のすべての単語が強調表示されます。 nと入力して、そのWordの次のインスタンスにジャンプできます。

最小限の入力でハイライトとナビゲーションが得られるので、私はこれを行う傾向があります。通常の方法でハイライトをオフにします::noh[lsearch]

5
DaveParillo

いくつかのオプションがあります。
-1つ、ドミニクが述べたように...あなたはそれらを一つずつ検索することができます(それほど実用的ではありません)
-2つ目は、「:g/<-Question」を実行して、それらすべての「リスト」を取得することです(もう少し良い、全体像を示します)
-3、xmlファイルでそのような種類のコメントのみを使用している場合は、強調表示グループを設定できます(xmlがどのように見えるかわからないため、他に何かあるかどうかはわかりませんそれらの中の一種のコメントも)。これは、vimrcで設定した場合に適しています。これは、vimを新しいバージョンで更新すると、xlm.vimファイルが失われるためです。

2
Rook

あなたは簡単に行うことができます

:set hlsearch

そして、質問を検索します

2
Dominik

必ずしもvimrcにコマンドを入れる必要はありません。いつでもコマンドラインで入力し、強調表示が不要になったときにクリアすることができます。コマンドは次のようになります。

:hi質問guifg = red guibg = blue gui = bold

Gvim(つまり、GUIを備えたvim)では、前景(guifg)、背景、および一般的な文字設定を設定します。

あなたがそのハイライトを取り除きたいならば、これをしてください:

:hi質問クリア

ターミナル内でvimを使用すると、次のコマンドを使用するように変更できます。

:hi質問ctermfg = red ctermbg = blue term = bold

もちろん、それらのいずれかをvimrcに入れることができます。また、guiフラグとtermフラグを1つのhiコマンドに組み合わせることができます。


[別のポスターの回答を読んだ後、以下に追加]

申し訳ありませんが、質問行の構文は、Vimの組み込みの「質問」ハイライトタグの構文ファイルの設定とすでに一致していると想定していました。 vimのxml構文ファイルに言及している他の回答を見るだけで、Questionの代わりにToDoハイライトグループを使用して上記のコマンドを発行できます。

1
user22303

私はパーティーに遅れていますが、まさにこの状況のた​​めにTODOFIXMEを使用しています。

すべてではないにしても、ほとんどのカラースキームは、次の例のTODOを、背景色、下線、イタリックの組み合わせで強調表示します。

<tree>
  <!--TODO : do I have to add a trunk tag ?-->
  <branch>
    <leaf>caterpillar</leaf>
    <leaf>caterpillar</leaf>
  </branch>
</tree>

意味的には実際には適合しませんが、純粋関数の観点からは非常にうまく機能します。

0
romainl