カスタムvim強調表示


12

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

<!-- Question: bla bla -->

私は今vimで編集していますが、vimで今すぐQuestionを強調表示して、コードを簡単に調べて、必要な場所をすべて見つけられるようにしたいと思います。私は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番目のものは動作します)。

回答:


9

私たちは、あなたにあまり正しくない答えを与えてきたと思います。私がマシンでテストしたことを試してみてください。

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

:highlight MyQuestions guifg=red guibg=green

次に、パターンが一致するたびにハイライトグループが存在するように指定します。

:syntax match MyQuestions /Question/

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

:syntax match MyQuestions /.*Question.*/


実際には、ソートのみが機能していました...一度に1つの試合しか許可されていないと思われます。更新#3を参照してください
。– sixtyfootersdude

1
@sixtyfootersdude:申し訳ありませんが、再び小さなエラーがありました。すべてのmatchコマンドは、代わりに「構文一致」コマンドである必要があります。したがって、[:match MyQuestions /.*Question.*/]の代わりに、[:syntax match MyQuestions /.*Question.*/]を使用します。これにより、必要な数の異なる一致を使用できます。実際、これらは構文ファイルに配置される最も一般的なタイプのコマンドの1つです。ただし、コマンドライン、vimrc、またはその他のスクリプトの任意の場所で実行できます。
user22303

vimrcファイルにsyntaxinfrontを追加しmatch...ても、一致はまったく効果がありません。これは私がこれを行うべき場所です。開いているファイルにそれをしても効果はありません。
sixtyfootersdude

1
@sixtyfooters:何があなたのために起こっているのかわかりませんが、それは間違いなくそれを行う方法です。スクリプトに配置する前にコマンドラインでテストします(構文設定は、ファイルに読み込まれている他のスクリプトのどこかでクリアされます)。定義したら、裸の ":highlight"コマンドを発行して(またはgvimのguiメニューから "Syntax"、 "Highlight test"を選択して)、存在するグループと強調表示を確認します。最初に強調表示コマンドを使用してグループを作成し、次に「構文一致」を使用して一致パターンを設定することを忘れないでください。
user22303

@sixtyfooters:ターミナルで(つまり、gvimではなく)vimを実行していると仮定しているため、用語プロパティの設定のみが機能するはずです。新しいファイルがロードされ、関連する構文ファイルが実行され、以前のすべての構文コマンドが消去されると、構文コマンドが消去されるように思えます。それでは、コマンドラインを使用するときに、ファイルをロードするたびにこれらのコマンドを再入力しますか?保存されておらず、ファイル名がまだ割り当てられていない新しいバッファのテキストでテストしてみてください。
user22303

5

探しているファイルは「構文」ファイルです。/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

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

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

更新

任意のファイルで同様の(並べ替え)機能が必要な場合は、「goto」コマンドを使用します。これはhlsearchのようなものだと認めます。

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

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


うわー!それは私がやりたいことのように聞こえます。現在、~/.vim/ folder. If I created it and create the file 構文はありません。vim .vimrc?に使用するように指示するために、どこか(おそらく)を参照する必要がありますか?
-sixtyfootersdude

1
いや。Vimは自動的にそれ(および他のいくつかのディレクトリ-プラグイン、色、コンパイラなど)を探し、構文ファイルがホームエリアに存在する場合、システムのデフォルトを優先します。
-DaveParillo

1
また、明確にするために、ディレクトリ を作成し、syntaxそのファイルに名前を付けますxml.vim
DaveParillo

.vimrcを.vimディレクトリに配置する必要がありますか?
-sixtyfootersdude

1
構文ファイルは.vim dirに保存されます。構文の強調表示は、言語固有のものであることが意図されています。任意のファイルで同様の(並べ替え)機能が必要な場合は、「goto」コマンドを使用します。回答に追加します。
-DaveParillo

2

簡単にできます

:set hlsearch

そして質問を検索します


それは私がやっていることですが、hlsearchは私を困らせます。+1、提案に感謝します。
sixtyfootersdude

2

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


+1 :g/提案は気に入っていますが、「質問」がコメントタグの直後に続かない場合は適用が難しいかもしれません。
-DaveParillo

@DaveParillo-ああ、はい。さて、私が言ったように、私はxmlについて何も知らないので、私はそれがいつもそうだと思った。
ルーク

ハイライトグループを設定するにはどうすればよいですか?
-sixtyfootersdude

1
@sixtyfootersdude-「:help e410」を参照してください。
ルーク

@Idigas:リファレンスをありがとう。見ていたが、それでも私の問題を解決できませんでした。質問に更新を追加しました。ありがとう。
sixtyfootersdude

1

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

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

フォアグラウンド(guifg)、バックグラウンド、および一般的なキャラクター設定を設定するgvim(GUIを使用したvim)。

そのハイライトを取り除くには、次のようにします。

:hi質問クリア

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

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

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


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

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


試しました:hi質問ctermfg = red ctermbg = blue term = boldですが、効果はありませんでした。
-sixtyfootersdude

申し訳ありませんが、:hiコマンドは、質問グループが強調表示される方法を確立しただけです。次に、ドキュメントのどの領域が質問グループの一部であるかを指定する必要があります。matchコマンドでこれを行うことができます::match Question / [search pattern] /または、あなたの場合::match Question / Question /
user22303

0

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.