20

TextMateからVimに来ていますが、vimの配色をカスタマイズしたいと思います。特定の単語や記号がどのハイライトグループに属しているかを知ることができれば、非常に役立ちます。TextMateでは、問題の単語/記号にカレットを置き、ctrl-shift-pを押すと、ツールチップが次のように表示されます。

text.html.basic
meta.tag.structure.any.html
string.quoted.double.html

この情報から、TextMateカラーテーマを編集して、問題のテキストにフォーマットを適用(または削除)するのは非常に簡単です。

Vimでは、特定の単語や記号の書式を変更したい場合、どこから始めればよいかわかりません。TextMateのctrl-shift-pに相当するものはありますか?

4

3 に答える 3

23

正しく理解できたかどうかはわかりませんが、これをお探しですか?

" adds to statusline
set laststatus=2
set statusline+=%{synIDattr(synID(line('.'),col('.'),1),'name')}

" a little more informative version of the above
nmap <Leader>sI :call <SID>SynStack()<CR>

function! <SID>SynStack()
    if !exists("*synstack")
        return
    endif
    echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc
于 2009-09-23T18:31:50.257 に答える
19

強調表示に関する多くの情報を取得する別の方法:

map <F3> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">" . " FG:" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"fg#")<CR>

C ファイルのコメントに移動して を押すF3と、次のようになります。

hi<cCommentStart> trans<cCommentStart> lo<Comment> FG:#00ff00

これは、ハイライト グループcCommentStartに含まれていることを示しており、リンクさCommentれて緑色 ( #00ff00) で色付けされています。これはここから (変更)です。詳細については、そのページを参照してください。

于 2009-09-24T07:09:24.430 に答える
4

UPDATE : From :help synID()(例を参照):

synID({行}, {列}, {トランス}) *synID()*
                結果は、その位置の構文 ID である Number です。
                現在のウィンドウの {line} と {col}。
                シンタックス ID は |synIDattr()| で使用できます。と
                |synIDtrans()| テキストに関する構文情報を取得します。
                {col} は一番左の列の 1、{line} は最初の列の 1 です。
                ライン。
                {trans} がゼロ以外の場合、透明なアイテムは
                彼らが明らかにするアイテム。知りたいときに便利です。
                有効な色。{trans} がゼロの場合、透過
                アイテムが返されます。どれか知りたいときに便利です。
                構文項目は有効です (例: 括弧内)。
                警告: この関数は非常に遅くなる可能性があります。最高速度は
                ファイルを順方向に通過することによって取得されます。

                例 (カーソル下の構文項目の名前をエコーし​​ます):  
                        :echo synIDattr(synID(行("."), 列("."), 1), "名前")

私の知る限り、できる最善の方法は:syntax、現在のファイルにロードされているすべての構文のリストを表示することです。現在のバッファの構文解析を提供するものは何も知りません。

:syntax構文項目を定義するだけであることに注意してください:highlight。構文項目の色付けを行うコマンドの使用です。

どのような変更を加えるかを決定したら、それらを に入れます~/.vim/after/syntax/<filetype>.vim。これらは、デフォルトの構文ファイルがロードされた後に変更を適用します。

于 2009-09-23T18:23:18.173 に答える