webdevqa.jp.net

.vimrcで折りたたまれたハイライトにカスタムカラーを設定する方法(PuTTYで使用)

.vimrcに以下を追加すると機能します

:hi Folded ctermbg=Grey

しかし、それでも明るすぎて目立つので、代わりに次のように、より具体的なカラートリプレットを指定します。

:hi Folded ctermbg=#A0A0A0

しかし、viはそれを受け入れません:

Error detected while processing /home/guest/.vimrc:
line   10:
E421: Color name or number not recognized: ctermbg=#A0A0A0

助言がありますか?

23
silvernightstar

ctermctermbgは、「カラーターミナル」の略です。これは、Vimがターミナルエミュレータで実行されるときに背景色を定義するために使用され、greycyanなどの名前付きの色または7などの色番号のみを受け入れることができます。 16進値はGVim/MacVimでのみ機能し、次のようにguibg/guifgとともに使用する必要があります。

hi Folded guibg=#A0A0A0

シェルで$ echo $TERMを実行します。xtermscreenxterm-256colorまたはいくつかのバリアントのようなものを返す必要があります。

8/16色を超える色を表示できない($TERM256colorが含まれていない)ターミナルエミュレーターでVimを実行する場合、別のグレーの色調を使用することはできません。ターミナルエミュレータで独自のパレットを定義します。

次のようになります。

hi Folded ctermbg=7

またはそのように:

hi Folded ctermbg=grey

ターミナルエミュレータが「256色対応」($TERMには256colorが含まれる)としてアドバタイズする場合、その番号を使用する限り、 このグラフ で任意の色を使用できます。 (242)であり、16進値ではありません。

次のようになります。

hi Folded ctermbg=242
43
romainl

romainl の説明に加えて、 here の説明に従って、次の行を.vimrcに追加する必要があります。

if &term =~ "xterm"
  "256 color --
  let &t_Co=256
  " restore screen after quitting
  set t_ti=ESC7ESC[rESC[?47h t_te=ESC[?47lESC8
  if has("terminfo")
    let &t_Sf="\ESC[3%p1%dm"
    let &t_Sb="\ESC[4%p1%dm"
  else
    let &t_Sf="\ESC[3%dm"
    let &t_Sb="\ESC[4%dm"
  endif
endif

その後、 romainl によって提供される xterm256カラーテーブル から選択された10進カラー値は、それに応じてPuTTYに表示されます。

0
silvernightstar