colorchemeを完全にオフにする方法は?


7

元の投稿

.vimrcで設定されたcolorchemeを持っていますが、完全にオフにしたい場合があります。つまり、Vimで端末のデフォルトの背景色と前景色を使用したいと思います。

私の問題は、簡単にそれを行う方法がわからないことです。:syntax offVim を使用すると、ほとんどのカラーリングがオフになりますが、カーソル線の色は削除されません。背景色を端末のデフォルトの色に変更しません。

:nocolorschemeまたはvim -u NONE色だけのコマンドはありますか?

カスタムの.vimrcファイルを作成して、-uオプションでロードできることを知っています。私はもっ​​と簡単な解決策を探しています。

メジャーアップデート

いくつかの異なるコマンドとアプローチを提案してきたので、それらのコマンドを呼び出した後に画面の写真をいくつか表示することにしました。

ターミナル環境

(明るい緑)と(黒)が得られるように、カスタムconfig.hでsuckless.orgのst(1)端末を使用します。私は、GNU / Linuxバージョンを実行しているものとPocketC.HIP船(に結果のLinuxチップ4.3.0-NTC#1 SMP水曜日5月11日午後9時57分30秒UTC 2016 GNU / Linuxのarm7l)。defaultfg = 10defaultbg = 0uname -a

スクリーンショット

  1. カラースキームなし(これが私が欲しいものです)

    ここに画像の説明を入力してください

    これは、Vimをで起動せずに実現したいことですvim -u NONE

  2. 通常の色

    ここに画像の説明を入力してください

    次の場合にこれらの色が表示されます。

    • 私は通常Vimを起動します(これは私の標準的なcolorchemeです)。
    • 電話します:set t_Co=0
      カスタムモノカイカラースキームを使用しても何も変わらないことに注意してください。5でわかるように、デフォルトのカラースキームの外観を変更します。

      面白いのは、:verbose set t_Co?その後に呼び出されたの出力が文字通り何も変わっていないt_Co=256ことを示していることです

    • 私はVimをから始めTERM=xterm vimます。

  3. デフォルトの色

    ここに画像の説明を入力してください

    次の場合にこれらの色が表示されます。

    • 電話します:colorscheme default
  4. Vimはほとんどの色を削除しましたが、ターミナルのデフォルトに戻りません

    ここに画像の説明を入力してください

    私はそれを手に入れました:

    • を呼び出してい:syntax offます。
  5. ほとんどカラースキームはありません

    ここに画像の説明を入力してください

    私はこれらの4つのコマンドを次々に実行した後にこれを取得します。

    " The effect is more visible on the default colorscheme 
    " than on my molokai colorscheme.
    :set t_Co=0
    :colorscheme default
    :hi clear
    

    :hi LineNrその後実行すると、次のようになります。

     LineNr          XXX term=underline ctermfg=6 guifg=Brown
    
  6. Cソースファイルで下線が引かれた文字列と型

    ここに画像の説明を入力してください

    適用後:set term=vt100

  7. Vimで壊れた再描画

    ビデオサムネイル
    :set term = builtin_dumbを呼び出した後にVimが壊れました(ビデオ)

    :set term=builtin_dumbVimを適用した後、jおよびを使用して移動するときに線を再描画する方法を忘れますk

  8. 私のtemrminalのデフォルトを調べます

    ここに画像の説明を入力してください

    これはecho -e " \033[0;4mfoo\033[0;0mbar"私のターミナルで実行した後に得られるものです。


3
私は2つの異なることを説明していると思います。colorschemeを無効にしたい場合は、ターミナルの色ではなく、vimのデフォルトの色を使用します。端末の色をvimで使用したい場合は、端末の色に一致するカラースキームを見つける(または作成する)必要があります。
スタトックス

@statox OK、実行vim -u NONEするとターミナルのデフォルトが継承されると思いました。ご指摘いただきありがとうございます。
Mateusz Piotrowski

それが簡単だったとしても、多くの人はかなり幸せだと思います;-)しかし、少なくとも次の理由から、それは不可能だと思います。1)すべての端末が同じ方法で色を定義するわけではありません端末の既存のメカニズムとほとんど互換性のないメカニズム。今、私は本当に色のカスタマイズの専門家ではないので、colorschemeの達人はより具体的になるか、方法を知ることができるでしょう:-)
statox

1
下線を説明するために回答を更新しました。以前のコメントでもう少し明確にする必要がありました。t_Coの設定は、カラースキームによって異なる効果があるように見えますが、これがどのようなメカニズムで発生するかはわかりません。もう1つ試してください。monokaiを使用する場合は、を実行し:set t_Co=0、すぐに:verbose set t_Co?t_Coを何に設定するのかを実行します。(どういうわけかそれが正しく設定されていないのではないかと思っています。私の唯一の推測は、それをリセットするオートコマンドを持っているか、設定されない原因となっているバグがあることです。)
Rich

1
わかりました。謎は解決:set t_Co=0しました。colorschemeがmonokaiに設定されているときになぜ動作しないのかについては、アップデートを参照してください。
リッチ

回答:


6

色を完全に無効にする

Vimで色をまったく使用しない場合は、次のコマンドを実行するだけです。

:set t_Co=0

これは、色がサポートされていない端末で実行されていることをVimに通知するため、Vimは白黒のテキストのみを出力します(その後、端末はデフォルトの色で表示します)。

ただし、t_Co設定を変更した後、現在のカラースキームが再ロードされることに注意してください(定義する色を適切に変更できるようにするため)。使用している "monokai" colorchemeはで始まり:set t_Co=256、すぐにオプションがリセットされます。

これは不正な動作であり、そのcolorchemeのメンテナにバグとして報告する必要があると私は主張します。もちろん、彼らはよく同意せず、カラースキームには256色が必要であるため、これをサポートしていないターミナルで使用しても意味がないと主張します(この行は、Vimが実行されているときにmonokaiが正しく機能するのに役立ちます)正しく設定されていない端末)。

どちらの方法でも、t_Coオプションを設定する前に、最初にmonochemからcolorchemeを変更する必要があります。

シェルで一般的に使用される色に制限する

Vimが出力に使用する色は、:highlightコマンドで定義および表示できます。実行:highlight clearすると、これらがVimのデフォルトにリセットされます(事実上、runningと同じです:colorscheme defaults)。

からの抜粋:help :highlight

:hi[ghlight] clear        Reset all highlighting to the defaults.  Removes all  
                          highlighting for groups added by the user!
                          Uses the current value of 'background' to decide which
                          default colors to use.

(注:'background'オプションに関するコメントに注意してください。)

これで希望する出力が得られない場合は、いくつかのオプションがあります。

  1. 現在256色モードでVimを使用している場合は、代わりに16色モードを使用してみてください。これにより、Vimがシェルで表示される可能性が高い色のパレットから選択することになります。

    これを行うきれいな方法は、異なる$ TERM変数を設定してVimを実行することです。使用する必要がある値は端末によって異なりますが、たとえば、$TERM通常はの場合xterm-256color、vimを次のコマンドで実行するとうまくいきます。

    TERM=xterm vim
    

    (vim:内で直接ターミナルオプションを設定することにより、よりハッキーな方法で同様の効果を達成することもできます:set t_Co=16。)

  2. または、色が正しくないのが特定のアイテムのほんの一部である場合は、:highlightコマンドを使用してそれらのアイテムの色を変更することもできます。たとえば、カーソル行から背景色を削除するには:

    :highlight CursorLine ctermbg=NONE
    

    どのグループを変更する必要があるかわからない場合:highlightは、引数なしで実行するか、:so $VIMRUNTIME/syntax/hitest.vim現在のハイライトをすべて表示する新しいウィンドウを開くことができます。

    カスタムコマンドを使用して、または新しいcolorchemeを設定してこれをすばやく行うためのヒントについては、この回答の下部にあるセクションを参照してください。

背景色の消去(BCE)

テキストが含まれているときに背景が異なって見えるという問題がある場合は、BCE(背景色の消去)が発生している可能性があります。次のコマンドで無効にできます:

:set t_ut=

これに関する特定の質問がここにあり、問題はこのブログ投稿でより詳細にカバーされています。

更新(下線の上書き):

コメントでの議論から、あなたが抱えている問題の1つは、端末に下線付きのテキストが異なる色で表示されることであることが明らかになります。これを回避するには2つのオプションがあります。

  1. 端末設定を修正して、下線付きのテキストを同じ色でレンダリングします。これを手伝うことはできません。

  2. Vimの下線をオフにします。これ:highlightは次のコマンドで実行できます。たとえば、次のようにすると、すべての色/フォーマットが行番号から削除されます。

    :highlight LineNr NONE
    

コマンドで色をオフにする

これをすばやく行うために、必要なすべての手順を一度に実行するコマンドを設定できます。

 function! TurnOffColors()
   :set t_Co=0
   :highlight LineNr NONE
   :highlight CursorLine NONE
   " Add any other necessary highlight lines here
 endfunction

 command! TurnOffColors call TurnOffColors()

新規作成 colorscheme

または、必要に応じて下線をオフにする新しい「NoColorsNoUnderlines」カラースキームを作成できます。これを行う方法の手順については、次のコマンドを実行します。

:edit $VIMRUNTIME/colors/README.txt

この黒と白のカラースキームを出発点として使用できます。


ただセットするだけのようcolorscheme defaultです。syntax offそれと一緒に私はほとんど私が望んでいるものです。ただし、(1)カーソル線が現在の線に下線を引いており、色を白にしています。(2)行番号はまだ色付けされています。
Mateusz Piotrowski

1
@MateuszPiotrowski私は答えを少し広げましたが、うまくいけば助けになります。色を完全にオフにしない限り、Vimにカラースキームを使用させたくないと言っても意味がありません。Vimは画面に何かを表示し、いくつかの色を使用する必要があります。色は、colorschemeによって定義されます。
リッチ

@MateuszPiotrowski "LineNr"は、行番号の色に影響を与えるハイライト設定です。
リッチ

3
実際、質問をもう一度読んでください。色を完全にオフにしたいだけかもしれませ:set t_Co=0あなたのためにそれを行います。
リッチ

これらのオプションはどれも期待どおりに機能しません。vim -u NONE端末のバックグラウンドとフォアグラウンドで始まりますが、vimrcはロードされません。この効果を得るには何を無効にすればよいのでしょうか。
Mateusz Piotrowski

2

set t_Co=0^X^O基本的な用語の強調表示(太字、下線)などの特定のVim機能を壊します。

ノーフリルのようなものを使用して、を調整できますhi Normal cterm=none ctermfg=none ctermbg=none。それ以外は、Vimのエクスペリエンスを台無しにしない限り、他の方法はありません。

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