80文字を超えるVimで別の背景色を表示する


134

Vim 80の列レイアウトの問題を見てきましたが、そこでの答えは、80文字のマークを超える実際のコンテンツのみを強調しています。100列以上のVimウィンドウを開いて、左端の80列を通常の背景で使用し、それ以降は少し異なる背景を使用したいと思います。Vimウィンドウの背景は、80文字を超えるテキストだけでなく、別の色にする必要があります。これは、最初に80字ポイントを超えずに80字ポイントに近づいていることを示します。

現時点では可能ではないと思いますが、念のためお願いします。

多分それはプラグインで行うことができますか?

望ましいVim右マージンハイライトのTextMateの例

TextMateの一般設定で「右マージンをハイライト」を選択すると、Vimの望ましい動作の例を見ることができます。

TextMateの右マージンを強調表示した例


回答:


223

Vim> = v7.3がある場合、これをに追加して.vimrc81以降を強調表示できます(80が最後の有効な列です)。

let &colorcolumn=join(range(81,999),",")

ハイライトが表示されない場合は、ColorColumnハイライトの色が設定されていない可能性があります。これを追加(好みに合わせて調整):

highlight ColorColumn ctermbg=235 guibg=#2c2d27

ここで、80桁目と120桁目以降を強調表示したいので、「警告」と「危険」のマーカーを分けています。あなたはこうしてそれを行うことができます:

let &colorcolumn="80,".join(range(120,999),",")

これはGVimがmyを編集しているスクリーンショットです.vimrc

GVimが私の.vimrcを編集する

私はUbuntu Mono 11フォントとmolokaiカラースキームを使用しています。私のvim設定とすべてのドットファイルはGitHubにあります。


3
colorcolumnは:help colorcolumn... あたり256の定義に制限されています。さらに、結合テクニックを使用すると、私の設定はある長さで切り捨てられているように見えますが、vimのソースを検索してその長さを把握することはできません。また、vimは、ウィンドウに入るたびにこの設定の値を文字列として解析し、バッファーを初期化するなどします。そのため、これは目的の結果を達成するための高コストな方法の1つです。
cptstubing06 2013年

15
あなたのドットファイルはホットです。
obfk 2013年

1
これを投稿してくれてありがとう、まさに私が探していたものでした!もう1つ質問があります。このルールを特定の種類のファイル(.md)に設定しない方法はありますか?
David Dias

1
@DavidDias確かに!autocmd FileType markdown let &colorcolumn=""完全に解除するようなことができます。
ジャスティンフォース


78

81列を強調表示

:set textwidth=80
:set colorcolumn=+1

また、スタイルを設定することもできます。

:hi ColorColumn guibg=#2d2d2d ctermbg=246

2
これ、あなたのようなものを行う必要がありますので、それは256列まで強調することも可能だが、残念ながらそれはハイライトに列のリストを取り、それのための速記はありません:set colorcolumn=+1,+2,+3,+4,+5,+6すべての方法まで、おそらくエトセトラ+256が広いためあなたはあなたがあなたの右マージンを望んでいると思います。ただし、これはウィンドウ内のすべての行ではなく、バッファに存在する行のみを強調表示します。
mkomitee 2011

1
@失読症接線:代わりに最初の80列を強調表示しないでください。
ブライス

1
私はそのことを考えていませんでした。> 80列を強調表示するために使用する色に背景を設定し、1〜80のすべての列にcolorcolumnを設定し、colorcolumnの強調表示グループを通常の背景にする色に設定します。
mkomitee

2
1つの質問ですが、入力し:hi colorcolumn ...て色を適切に設定することはできますが、.vimrcに入れても機能しないようです。あなたはそれをする方法を知っていますか?
robbrit

robbritと同じ問題が発生しています。強調表示コマンドをexモードで実行すると見栄えは良くなりますが、vimrcファイルにある場合、colorschemeが破壊されます...
Bennidhamma

16

上記のコメントで提案されたソリューション。最初に背景を強調表示してから、ColorColumnをオーバーレイとして黒で強調表示します。colorcolumnを1〜80行目に設定します。

hi Normal guibg=#32322f ctermbg=236
hi NonText guibg=#32322f ctermbg=236
hi ColorColumn guibg=#000000 ctermbg=0
let &colorcolumn=join(range(1,80),",")

1
これはシンプルですが見事です。ありがとう!
空爆

8

試してください:

:/\%>80v./+

+80文字をエラーとしてマークします


ピンチでとても賢い。テーマの変更に適応するので、気に入っています。ありがとう。
ベンジャミン

0

欲しいものが手に入るとは思えませんが、私自身もそういうものに興味があるので、この質問に答えていきます。

多分、私は明白であることを述べています、しかしあなたはあなたが80番目の列にどれだけ近いかを示すために70番目以上の列のhighligthを設定することができます。


0

私のようにonedark.vimを使用しており、Connerが投稿したソリューションを必要としている場合は、これらの行をvimrcファイルに追加しました

let &colorcolumn=join(range(1,80),",")
let g:onedark_color_overrides = {
  \ "black": {"gui": "#2C323C", "cterm": "236", "cterm16": "8"},
  \ "cursor_grey": {"gui": "#282C34", "cterm": "235", "cterm16": "0"}
  \ }

2つの値を交換し、onedarkのソースコードから取得しました

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