web-dev-qa-db-ja.com

行の長さの強調表示は、GUIではなくコンソールVimで正しく機能します

この質問は これ に関連しています。

ダミアンコンウェイは、彼の 最近のOSCON 2013トーク Vimについての過剰な行の長さをマークするための素晴らしいスニペットを提供しました。

highlight ColorColumn ctermbg=Magenta
call matchadd('ColorColumn', '\%81v', 100)

その結果:

screenshot of terminal Vim

コンソールVimを使用するとうまく機能します。ただし、ctermbg=Magentaの部分をguibg=Magentaに変更すると、文字が強調表示されるだけで、マゼンタでは色付けされません。

screenshot of gVim

これをgVimで正しく機能させるにはどうすればよいですか?

1
Isxek

うーん、私のために働く?参考までに、Vim v7.4パッチ335を実行しています(出血はあまりありません!!)

.vimrcに次の2行を追加しました。

highlight ColorColumn ctermbg=Magenta guibg=Magenta
call matchadd('ColorColumn', '\%81v', 100)

Vimとtaa-daaをリロードしました! 81位のキャラクターは魔法のようにマゼンタ化されました。


編集:以下のコメントによると、@ isxekはこれらの2行を.vimrcファイルの最後に置く必要があることがわかりました。明らかに、使用されるカラースキーム(Molokai)はColorColumnハイライトスキームを設定します。すべてがロードされた後にColorColumnハイライトを設定し、基本的に「行を最後に置く」と同じことを実行したため、この問題は発生しませんでした。


個人的には、実際のGroupハイライトグループに設定されているハイライト色を台無しにしないように、一意のColorColumn識別子を使用することをお勧めします。

highlight MyLineTooLongMarker ctermbg=Magenta guibg=Magenta
call matchadd('MyLineTooLongMarker', '\%81v', 100)

Vimとgvimの両方で動作します。

試しましたか/ ColorColumnを使用していますか? textwidthに基づいて1つまたは複数の列を強調表示するVimの比較的新しいオプション。 version 7.3で追加されました。とても便利な!

私はこのようにそれを使用します:

" it didn't exist before Vim v7.3, sometimes I encounter older versions of vim (centOS, looking at you!!)
if v:version >= 703
    " a faint grey (gray?) color, not too insistent
    highlight ColorColumn term=reverse ctermbg=233 guibg=#202020
    " put the marker(s) at 'textwidth+2' (and at position 120)
    set colorcolumn=+2,120
    " if we're called as '*view', or on a console, turn off the colorcolumn
    if v:progname =~? 'view' || &term =~? 'linux|console'
        set colorcolumn=
    endif
endif

したがって、基本的に、デフォルトとしてtextwidth + 2と位置120に表示される2行がディスプレイに表示されます。スクリーンショットを取得し、set colorcolumn=+2,90で行を移動したので、ここでは幅が広すぎません。このように見えます:

gvim showing colorcolumn lines

textwidth + 290の位置にある2本の灰色の縦線が表示されます。ここでは、私のtextwidth78に設定されているため、行は80文字、90文字外に配置されます。

これで、v7.3より前のバージョンのvimにcolorcolumnの形式を追加するために必要な2行を使用できます。上記のバージョンチェックブロックのelse句に貼り付けてください。

3
lornix