নিওভিমে রঙিন স্কিম ব্যবহার করতে সমস্যা


16

আমার রঙের স্কিমটি কীভাবে termভিএম-এর সেটিংয়ের সাথে ইন্টারঅ্যাক্ট করছে সে সম্পর্কে আমার সম্পূর্ণ বোধগম্যতা নেই এবং এটি নিওভিমে এটি সঠিকভাবে প্রদর্শন করার জন্য আমার ক্ষমতাকে বাধা দিচ্ছে।

আমার .vimrc ফাইলে, প্রশ্নযুক্ত রঙীন স্কিমের সঠিক আচরণের জন্য সেটিংস প্রয়োজন

set term=xterm
set t_Co=256

এই সেটিংসগুলির মধ্যে যে কোনওটি ছাড়াই রঙিন স্কিমের ভুল প্রদর্শন হতে পারে:

সঠিক সঠিক রঙ প্রদর্শন ভুল ভুল রঙ প্রদর্শন বিভিন্ন ভুল বিভিন্ন ভুল রঙ প্রদর্শন

স্কিমটি এর মতো দেখাচ্ছে:

set background=dark
hi clear
if exists("syntax_on")
    syntax reset
endif
let g:colors_name="impact3"

if exists("g:impact_transbg")
    hi Normal       ctermfg=255 ctermbg=none
    hi NonText      ctermfg=DarkGray  ctermbg=none

    hi Statement    ctermfg=Blue      ctermbg=none
    hi Comment      ctermfg=DarkGray  ctermbg=none cterm=bold term=bold
    hi Constant     ctermfg=173  ctermbg=none
    hi Identifier   ctermfg=Cyan      ctermbg=none
    hi Type         ctermfg=DarkGreen ctermbg=none
    hi Folded       ctermfg=0 ctermbg=235 cterm=underline term=none
    hi Special      ctermfg=Blue      ctermbg=none
    hi PreProc      ctermfg=LightGray ctermbg=none cterm=bold term=bold
    hi Scrollbar    ctermfg=Blue      ctermbg=none
    hi Cursor       ctermfg=white     ctermbg=none
    hi ErrorMsg     ctermfg=Red       ctermbg=none cterm=bold term=bold
    hi WarningMsg   ctermfg=Yellow    ctermbg=none
    hi VertSplit    ctermfg=0     ctermbg=0
    hi Directory    ctermfg=Cyan      ctermbg=DarkBlue
    hi Visual       ctermfg=White     ctermbg=Gray cterm=underline term=none
    hi Title        ctermfg=255     ctermbg=Blue
    hi String       ctermfg=Blue   ctermbg=none

    hi StatusLine   term=bold cterm=bold,underline ctermfg=White ctermbg=Black
    hi StatusLineNC term=bold cterm=bold,underline ctermfg=Gray  ctermbg=Black
    hi LineNr       term=bold cterm=bold ctermfg=2 ctermbg=None
    hi Search       ctermfg=Black ctermbg=2
    hi TabLine      ctermfg=0 ctermbg=DarkGray
    hi TabLineFill  ctermfg=DarkGray ctermbg=DarkGray
else
    hi Normal       ctermfg=White ctermbg=Black
    hi NonText      ctermfg=DarkGray  ctermbg=Black

    hi Statement    ctermfg=Blue      ctermbg=Black
    hi Comment      ctermfg=DarkGray  ctermbg=Black cterm=bold term=bold
    hi Constant     ctermfg=DarkCyan  ctermbg=Black
    hi Identifier   ctermfg=Cyan      ctermbg=Black
    hi Type         ctermfg=DarkGreen ctermbg=Black
    hi Folded       ctermfg=DarkGreen ctermbg=Black cterm=underline term=none
    hi Special      ctermfg=Blue      ctermbg=Black
    hi PreProc      ctermfg=LightGray ctermbg=Black cterm=bold term=bold
    hi Scrollbar    ctermfg=Blue      ctermbg=Black
    hi Cursor       ctermfg=white     ctermbg=Black
    hi ErrorMsg     ctermfg=Red       ctermbg=Black cterm=bold term=bold
    hi WarningMsg   ctermfg=Yellow    ctermbg=Black
    hi VertSplit    ctermfg=White     ctermbg=Black
    hi Directory    ctermfg=Cyan      ctermbg=DarkBlue
    hi Visual       ctermfg=White     ctermbg=DarkGray cterm=underline term=none
    hi Title        ctermfg=White     ctermbg=DarkBlue

    hi StatusLine   term=bold cterm=bold,underline ctermfg=White ctermbg=Black
    hi StatusLineNC term=bold cterm=bold,underline ctermfg=Gray  ctermbg=Black
    hi LineNr       term=bold cterm=bold ctermfg=White ctermbg=Black
endif

নিওভিমে, termসেট করা যায় না। আমি নেভিওমকে একটি ম্যানুয়ালি সেট $ TERM এর সাথে অনুরোধ করার চেষ্টা করেছি:

TERM=xterm nvim

এটি নিয়মিত ভিমে রঙের সঠিক প্রদর্শন তৈরি করেছিল (অর্থাত্ .vimrc এ পরিভাষা নির্ধারণের সমতুল্য), কিন্তু নওভিমে এটি দেখতে এটির মতো দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

ভিএম-তে এই রঙের স্কিমের সঠিক প্রদর্শন তৈরির জন্য কেন সমন্বয় set term=xtermএবং set t_Co=256প্রয়োজনীয় এবং কেন সেটিংসের সমতুল্য সংমিশ্রণটি নিউভিমের ক্ষেত্রে আলাদা ফলাফল তৈরি করে?

সম্পাদনা:

ডিফল্টটি হ'ল $TERM=xterm256-color , যা কোনও কারণে xtermরঙের ডিসপ্লেটি সঠিকভাবে তৈরি করতে নিয়মিত ভিমে ওভাররাইড করা উচিত। 256 ডিফল্ট পরিবেশের পরিবর্তনশীল সহ, নিওভিম এইরকম দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

এটি নিয়মিত ভিমের সাথে অভিন্ন xterm256-color, তবে উদ্দেশ্য হিসাবে নয়। আমার লক্ষ্যটি বুঝতে হবে যে কেন এক্সটার্ম হ্যাক প্রয়োজনীয় / ভিমে কাজ করা, এবং কেন এটি নিওভিমে একই দেখাচ্ছে না।

নোট করুন যে বর্ণের অনেকগুলি উপরের শব্দটি এনভির ভেরিয়েবল সেটিং সহ সঠিকভাবে উপস্থিত হয়, উল্লেখযোগ্য ব্যতিক্রমগুলি লাইন নম্বর এবং ব্যাকগ্রাউন্ড হিসাবে রয়েছে। আমি সন্দেহ করি যে এই নির্দিষ্ট রঙের স্কিমে রঙগুলি নির্দিষ্ট করা হয়েছে তাতে জড়িত থাকতে পারে।


1
আপনার $ TERM ইতিমধ্যে সেট করা আছে যা সাধারণত সিস্টেমগুলিতে 'সঠিক' হিসাবে বিবেচিত হয় - 256-রঙ সক্ষম। সুতরাং t_Co বিকল্পটি, যা সাধারণত পুরানো টার্মিনালের সাথে সামঞ্জস্যের জন্য, প্রয়োজনীয় হওয়া উচিত নয়। আপনি উভয় কনফিগারেশন লাইন মন্তব্য যদি?
ডেভিড লর্ড

@ ডেভিড উভয় কনফিগার লাইন মন্তব্য করাও কমেন্ট করার মত দেখাচ্ছে set term=xterm
পিত্ত

থিমটি সঠিকভাবে রেন্ডার করার সাথে সাথে এই স্ক্রিপ্টটি চালানো থেকে আউটপুট দেওয়ার সময় আপনি যে আইটার্ম রঙিন কনফিগারেশন ব্যবহার করছেন তার কোনও স্ক্রিনশট অন্তর্ভুক্ত করতে পারবেন ?
এরিক প্রুইট

উত্তর:


11

প্রধান সমস্যাটি

আপনি যে প্রধান সমস্যাটির মুখোমুখি হচ্ছেন তা হ'ল কমান্ডগুলির ক্রম দ্বারা .vimrc

আপনি রঙচেমি লোড করার পরেg:impact_transbg ভেরিয়েবল সেট করে রেখেছিলেন এবং তাই রঙচেমির বিবৃতিটি পরীক্ষা করে যখন ভেরিয়েবলটি উপস্থিত থাকে না এবং রঙচেমের দ্বিতীয় সংস্করণ ( ব্লকটিতে) ব্যবহৃত হয়।ifelse

ঠিক করার জন্য, আপনাকে কেবল এমন লাইনটি সরাতে হবে যা আপনি রঙিনচীমটি যেখানে লোড করেন সেখানে রেখাটির উপরে চলক নির্ধারণ করে:

let g:impact_transbg=1
colorscheme impact3

আপনি (এবং হওয়া উচিত!) এর পরে আপনার থেকে অপ্রয়োজনীয় লাইনগুলি সরিয়ে ফেলতে পারেন .vimrc:

set term=xterm
set background=dark
set t_Co=256

অন্যান্য ব্যাপার

এটি কীভাবে কাজ করে সে সম্পর্কে আপনার থাকতে পারে আরও কয়েকটি ভুল ধারণা / বিভ্রান্তিও আমি পরিষ্কার করতে পারি:

'term'& এর আচরণের ব্যাখ্যা't_Co'

আপনার ER TERM সেট করা আছে xterm256-color। ভিম এটি পড়ে এবং টার্মিনালটি (বা টার্মক্যাপ) অনুসন্ধান করে যে টার্মিনালটি কত রঙ সমর্থন করে এবং তারপরে সে 't_Co'অনুযায়ী সেট করে। আপনার $ শব্দটি সাহসী সঠিক (আপনার) এবং আপনার terminfo ডাটাবেসের যে টার্মিনাল (পুলিশের করে) আপনি উচিত সঠিক তথ্য রয়েছে কখনো প্রয়োজন হস্তচালিতভাবে রিসেট 't_Co'

যাইহোক, আপনি তারপর ম্যানুয়ালি ভিমকে এক্সটার্মে সেট করছেন 'term'। আপনার টার্মিনোটি ভিমকে বলে যে এই টার্মিনালটি কেবল 8 টি রঙকে সমর্থন করে, সুতরাং এটি যুক্ত 't_Co'করা হলে ভুলভাবে 8 এ সেট করা যাবে You আপনি নিজেই 256-এ 't_Co' ফিরে যাচ্ছেন, তবে আপনি যদি 'term'সঠিক মানটি রেখে সেটিংটি রেখেছিলেন , আপনার প্রয়োজন হবে না ।

উল্লেখ্য, আপনি এই পরিবর্তনটি 't_Co'সেটিং পর নিজে g:impact_transbg, এটা colorscheme (colorscheme রঙের নতুন নম্বর মানিয়ে দিতে) পুনরায় লোড করা কারণ, এবং কারণ g:impact_transbg হয় এখন সেট, আপনি রং আপনি ইচ্ছা পেতে।

(সেটিং লাইন 'term'বাদ দেওয়া, 't_Co'হয় ইতিমধ্যে 256 সেট যখন আপনি আপনার .vimrc আধুনিক লাইন পাওয়া, এবং তাই colorscheme পুনরায় লোড করা হয় না। অত: পর ভুল রং)

সুতরাং, পুনরুদ্ধার করতে:

term=xterm
colorscheme impact3
let g:impact_transbg=1
set t_Co=256

ফলাফল: 't_Co'256 এ সেট করা থাকলে রঙগুলি সঠিকভাবে লোড হয়।

"term=xterm
colorscheme impact3
let g:impact_transbg=1
set t_Co=256

ফলাফল: কালারশেম colorschemeকমান্ড দ্বারা লোড করা হয় , ভেরিয়েবলের অস্তিত্ব নেই, রঙগুলি ভুল।

term=xterm
colorscheme impact3
let g:impact_transbg=1
"set t_Co=256

ফলাফল: কালারশেম colorschemeকমান্ড দ্বারা লোড হয় , ভেরিয়েবলের অস্তিত্ব থাকে না এবং ভিম কেবল 8 টি রঙ ব্যবহার করে, রঙগুলি ভুল।

"term=xterm
colorscheme impact3
let g:impact_transbg=1
"set t_Co=256

ফলাফল: কালারশেম colorschemeকমান্ড দ্বারা লোড করা হয় , ভেরিয়েবলের অস্তিত্ব নেই, রঙগুলি ভুল।

let g:impact_transbg=1
colorscheme impact3

ফলাফল: Colorscheme দ্বারা লোড হয় colorschemeকমান্ড পরিবর্তনশীল করে , বিদ্যমান তাই রং সঠিক। (এবং বোনাস হিসাবে 'term'এবং 't_Co'এছাড়াও সঠিক!)

NeoVim এ আচরণটি আলাদা কারণ কেবল সেট করার কলটি 't_Co'উপেক্ষা করা হয়, যেমন অন্যান্য উত্তরদাতারা ইতিমধ্যে উল্লেখ করেছেন।

'background'

কালারশিম সেট করার পরে, আপনি সেটও করুন 'background'। এই নির্দিষ্ট রঙের শেমের জন্য এটি সম্পূর্ণ অপ্রয়োজনীয়, কারণ কালারশিমটি প্রথম কাজটি সেট 'background'করে 'dark'

নোট করুন যে আমি অন্য উত্তরদাতাদের সাথে একমত নই যাঁরা আপনাকে পরামর্শ দেন যে 'background'আপনার রঙচামি লোড করার পরে আপনার সেট করা উচিত । কালারশিমটি 'background'এর রঙগুলি সামঞ্জস্য করতে মান ব্যবহার করতে পারে , তাই 'background'রঙচামি লোড করার আগে সেট করা আরও সুস্পষ্ট ক্রম। (তবে খেয়াল করুন যে আপনি যদি 'background'সেটিংটি পরিবর্তন করেন তবে ভিম কোনও লোড হওয়া রঙের চামড়াগুলি পুনরায় লোড করবে, সুতরাং এটির 'background'পরে সেটিংসটিও কাজ করবে: এটি কেবল অপ-অনুকূল নয়))


1
ধন্যবাদ, এটি অত্যন্ত পরিপূর্ণ এবং অতিরিক্ত প্রসঙ্গে আমি প্রশংসা করি context
কনরাড মায়ার

@ কনরাডমিয়ার আমি আনন্দিত যে এটি আপনার পক্ষে সহায়ক ছিল!
ধনী

7

নেওভিমের ক্ষেত্রে, t_Coএবং TERMকোনও পার্থক্য করবেন না।

আপনি কল set background=darkকরার আগে এবং পরে কল করছেন colorscheme impact3। কালারশিমের set background=darkনীচে চলে যান এবং আপনার ভিএমআরসি থেকে অন্য কলটি সরিয়ে ফেলুন

থেকে :help 'background':

When 'background' is set Vim will adjust the default color 
groups for the new value.
...
When a color scheme is loaded (the "g:colors_name" variable 
is set) setting 'background' will cause the color scheme to 
be reloaded.

আরও দেখুন: https://github.com/justinmk/molokai/commit/aa1cc201c743dd7d1b80bb2e2b5fbb7894ebfe5f

আমার লক্ষ্যটি বুঝতে হবে যে কেন এক্সটার্ম হ্যাক প্রয়োজনীয় / ভিমে কাজ করা, এবং কেন এটি নিওভিমে একই দেখাচ্ছে না।

  • নিওভিম এ বিষয়ে কিছু চিন্তা করে না t_Coকারণ এটি "সত্য রঙ" সক্ষম না করলে এটি 256 ধরে নেয় ।
    • আসলে নিওভিম সমস্ত t_*বিকল্প উপেক্ষা করে দেখুন, দেখুন :help t_xx
  • নিওভিম &termসেট হওয়ার অনুমতি দেয় না কারণ এটি অর্থহীন। নেওভিম টার্মিনাল ক্ষমতা সনাক্ত করতে ইউনিবিিলিয়াম এবং অন্যান্য প্রক্রিয়া ব্যবহার করে।

নিওভিম টার্ম দক্ষতা সনাক্তকরণ এবং `t_ *` সেটিংস সম্পর্কিত আপনার অন্তর্দৃষ্টিগুলির জন্য অনেক ধন্যবাদ। set background=darkবিবৃতিটির অপ্রয়োজনীয় অনুলিপি সরানো এবং প্রতিস্থাপনের কোনও প্রভাব ছিল না, তবে অন্তর্নিহিত বাস্তবায়ন সম্পর্কে সেই বিবরণগুলি আমার কাছে অনেক বেশি মূল্যবান।
পিত্ত

2

আমি আপনাকে আইটার্ম 2 ব্যবহার করতে দেখছি, তাই আপনি এটি ব্যবহার করে দেখতে পারেন:

  1. উইন্ডো + পছন্দ পছন্দ করুন,
  2. profilesট্যাবে যান
  3. বাম তালিকায় আপনার বর্তমান প্রোফাইলটি পরীক্ষা করুন
  4. terminalডানদিকে ট্যাবে ক্লিক করুন
  5. ইন Report terminal typeচয়নxterm-256color
  6. সম্পন্ন.

আপনার পরামর্শের জন্য ধন্যবাদ. উপরোক্ত সম্পাদনা আমি সম্পর্কিত মন্তব্য সঙ্গে xterm-256color। ইতিমধ্যে ইতিমধ্যে সেট করা টার্মিনাল ধরণের সন্ধান করতে আমি আপনার পদ্ধতিটি অনুসরণ করেছি।
গল

2

আপনি দুর্দান্ত একটি নিওভিম বৈশিষ্ট্য হারিয়েছেন। একটি এনভ ভার আছে যা এই স্টাফগুলিতে সহায়তা করে। এটি আপনার এনভিআরসিআরকে রাখার চেষ্টা করুন:

let $NVIM_TUI_ENABLE_TRUE_COLOR=1 " True gui colors in terminal

অথবা

export NVIM_TUI_ENABLE_TRUE_COLOR=1

শেল মধ্যে


অবগতির জন্য: এই ব্যবহার করার প্রয়োজন হবে guifgএবং guibg। ওপির কালারশিম ব্যবহার করে ctermfgএবং ctermbg
জাস্টিন এম কিজ

ওহ আপনি ঠিক. দুঃখিত!
ইয়ান ভ্যানহলেউইন

2

আপনার বিকল্পগুলি সেট আপ করতে হবে

let $NVIM_TUI_ENABLE_TRUE_COLOR=1 
set termguicolors

আপনার .config/nvim/init.vim


সেই সব বিকল্প ব্যবহার করার জন্য হয় guifgএবং guibgআরজিবি রঙ জন্য সহকারে বিবেচনা করে। প্রশ্নের রঙের স্কিমটি কেবল ctermfgএবং ব্যবহার করে ctermbg
টমি এ

1
এটা আমার জন্য এটি। TERM ইতিমধ্যে xterm-256 রঙে ছিল। ধন্যবাদ!
কিউস

1

নোট করুন যে নির্দিষ্ট রঙের স্কিমটি যদি অন্য-বিধানের মধ্যে রঙিন স্কিমের দুটি সেট। পরিবর্তনশীল অস্তিত্ব g:impact_transbgনির্বাচন আকাঙ্ক্ষিত রঙের সেট, এবং মূলত বর্ণবিন্যাস মধ্যে স্বচ্ছ ব্যাকগ্রাউন্ড এই যা থেকে অ্যাকাউন্টে জন্যই ছিল উদ্ভূত

2nd বর্ণবিন্যাস এবং যদি-অন্য বিবৃতি (শুধুমাত্র পছন্দসই বর্ণবিন্যাস ত্যাগ সঙ্গে দূরে করছেন আউট মন্তব্য g:impact_transbg) উভয় তেজ মধ্যে অভিপ্রেত আচরণ উৎপাদ এবং এমনকি সঙ্গে neovim set term=xtermএবং set t_Co=256সরানো হয়েছে।

এটি বোঝায় যে $TERM=xterm-256colorsভিম এবং নেওভিম উভয়ের মধ্যেই শর্তসাপেক্ষে if exists("g:impact_transbg")ব্যর্থ হয়, তবে সেটিংসের সংমিশ্রণ

set term=xterm
set t_co=256

শর্তসাপেক্ষে সফল হতে দেয়। উপরোক্ত বর্ণিত আইফোন ধারাটি অপসারণ করা বিষয়বস্তু সমস্যার সমাধান করে তবে .vimrc টার্ম সেটিংস এবং এর জুটির মধ্যে মিথস্ক্রিয়া সম্পর্কে এখনও একটি রহস্য রয়েছে g:impact_transbg


0

আপনার $TERMপরিবেশের পরিবর্তনশীল এটির মতো সেট করার চেষ্টা করুন :

TERM=xterm-256color

এইভাবে এনভিম শুরু করার চেষ্টা করুন:

export TERM=xterm-256color; nvim

যদি এটি কাজ করে তবে $TERMস্থায়ীভাবে আপনার শেলের মধ্যে ভেরিয়েবল সেট করুন ।


ধারণাটির জন্য ধন্যবাদ, জেফ। আমি সম্পর্কিত প্রশ্ন সহ আমার প্রশ্ন সম্পাদনা xterm-256color। রফতানির মাধ্যমে ER TERM নির্ধারণের কোনও প্রভাব ছিল না।
পিত্ত

0

সোলারাইজড থিমটি নিয়ে আমার সম্প্রতি এই সমস্যাটি ছিল। সমস্যাটি TERMenv ভেরিয়েবল থেকে এসেছিল ।

আমি আমার টার্মিনাল এমুলেটরটি (আমার ক্ষেত্রে টার্মিনেটর) env TERM=xterm-256color zshকেবলমাত্র zsh শুরু করে স্বাভাবিক হিসাবে চালানোর জন্য বলার মাধ্যমে এটি সংশোধন করেছি ।


ওপিএস TERM ইতিমধ্যে xterm-256 রঙে সেট করা আছে। আমি মনে করি আপনি একটি পৃথক সমস্যা সম্মুখীন হয়েছে।
ধনী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.