জিএনইউ স্ক্রিনের অধীনে ভিএম-তে সিটিআরএল- * ঠিক করা


10

জিএনইউ স্ক্রিনের নীচে ভিএম চালানোর সময়, আমি খুঁজে পেয়েছি যে CTRLতীর এবং Pg * কীগুলির সংমিশ্রণগুলি প্রত্যাশা অনুযায়ী কাজ করে না।

আমি উবুন্টু ১০.১০ vim-gnomeপ্যাকেজটি ব্যবহার করছি ।

একটি ভিন্ন মেশিনে, উবুন্টুও চালাচ্ছে, এটি সমস্যা ছাড়াই কাজ করেছে; দুর্ভাগ্যক্রমে আমার কাছে এখন সে কনফিগারেশন উপলব্ধ নেই।

এখানে একটি সম্পর্কিত প্রশ্ন রয়েছে: ভিমে সিটিটিএল + তীর কীভাবে ঠিক করবেন?

তবে, সেখানে প্রস্তাবিত সমাধানটি টার্মিনাল এমুলেটরের সাথে কাজ করার জন্য ভিআইমের কী-বাইন্ডিংগুলি পুনরায় তৈরি করতে হবে, সেক্ষেত্রে পিটিটিওয়াই। আমি বাছাইয়ের কোনও কাজ করার কথা মনে করি না এবং সন্দেহ করি যে এখানে একটি স্ক্রীন কনফিগারেশন বিকল্প রয়েছে যা এই সমস্যাটি সমাধান করবে।

এখানে একটা ব্যাপার থ্রেড যা বলে যে তেজ মাধ্যমে চলমান GNU-স্ক্রীন মেইলিং তালিকা $ TERM=xterm vimএকটি যথাযথ সমাধান করতে বা কার্যসংক্রান্ত নেই। এটি কাজ করে তবে আমি কিছুটা উদ্বিগ্ন যে পার্শ্ব প্রতিক্রিয়া হতে পারে। অন্যান্য মেশিনে আমি যে সমাধানটি সেট আপ করেছি এটি যথেষ্ট পরিচিত বলে মনে হচ্ছে না (যদি কোনও সমাধানের প্রয়োজন হয় তবে)।


+1 - আমার একই সমস্যা ছিল এবং - আপনি যেমন পরামর্শ করেছিলেন - term xtermআমার ~/.screenrcফাইলে যুক্ত করা এটি আমার জন্য স্থির করে। আবার ধন্যবাদ!
জাস্টিন ইথিয়ার

উত্তর:


4

অন্তর্নিহিত হিসাবে তার আপডেটে বলা হয়েছে, ফাইলে যুক্ত term xtermকরা ~/.screenrcএই সমস্যাটি ঠিক করেছে বলে মনে হচ্ছে।


আচ্ছা .. হ্যাঁ, তবে আমি কেন এ screenজাতীয় $TERMপরিবেশ পরিবর্তনের পরিবর্তে কেবল পরিবেশের পরিবর্তনশীল প্রচার করে না সে সম্পর্কে কিছু ধরণের ব্যাখ্যা দিয়েছি "screen"। সম্ভবত কিছু পরিস্থিতি রয়েছে যেখানে এটি হওয়া জরুরী $TERM == screen
26:58

3
@ প্রত্যাশিত: স্ক্রিন সেটগুলির কারণটি TERM=screenহ'ল ভিতরে থাকা অ্যাপ্লিকেশনগুলি কোনও স্ক্রিন টার্মিনালের অভ্যন্তরে যোগাযোগ করছে: তারা যে কন্ট্রোল সিকোয়েন্সগুলি প্রেরণ করে এবং গ্রহণ করে তা স্ক্রিনের হয়, যা টার্মিনাল নিজেই প্রদর্শিত হচ্ছে being যেহেতু আপনি কোনও স্ক্রিন সেশনটি আলাদা করতে এবং এটিকে আবার বিভিন্ন ধরণের টার্মিনালের সাথে সংযুক্ত করতে পারেন, তাই এই দিকনির্দেশের স্তরটি প্রয়োজনীয়।
গিলস 'অশুভ হওয়া বন্ধ করুন'

@ গিলস: ধন্যবাদ, আমি এরকম কিছু সন্দেহ করেছি suspected এটিকে পুনরায় সেট করা থেকে কোন ধরণের সমস্যা দেখা দিতে পারে xterm?
শিগগির

1
বেশি নয়, কারণ এক্সটার্ম এবং স্ক্রিন বেশিরভাগই সামঞ্জস্যপূর্ণ। তবে প্রত্যেকের কয়েকটি দক্ষতা রয়েছে যা অন্যটি করে না এবং আপনি যদি অ্যাপ্লিকেশনগুলিতে মিথ্যা বলেন তবে তারা এমন একটি ক্ষমতা ব্যবহার করতে পারে যা আসলে কাজ করে না। আউটপুট তুলনা করুন infocmp screenএবং infocmp xterm, এবং পর্দা পালাবার ক্রম সঙ্গে xterm পালাবার ক্রম । আমার কাছে অফার করার কোনও ব্রেকডাউন নেই; বেশিরভাগ অ্যাপ্লিকেশনগুলি এতে আপত্তি করবে না তবে কয়েকটি বিরক্তিকর আচরণ করতে পারে।
গিলস

2

টার্মিনাল সেট করার আরও কয়েকটি উপায় রয়েছে যা চলমান প্রক্রিয়াগুলিতে কাজ করে:

  • একটি চলমান স্ক্রিন উদাহরণে, টিপুন ^A- :এবং কমান্ড জারি করার term xtermফলে সেই পরিস্থিতিতে নতুন খোলার পর্দা তাদের $TERMপরিবেশ পরিবর্তনশীল সেট দিয়ে শুরু হবে xterm; এটি পরিবর্তিত অনুরোধগুলিতে প্রচার করবে vim। এই ভিআইএম দৃষ্টান্তগুলি সিটিআরএল-কম্বোস সম্পর্কিত সঠিক আচরণ প্রদর্শন করবে; আমি এখনও এই কৌশলটির কোনও পার্শ্ব প্রতিক্রিয়া খুঁজে পাইনি। এই কমান্ডটি বিদ্যমান পর্দাগুলিকে প্রভাবিত করে না। এই কমান্ডটি অবশ্যই কোনও ~/.screenrcফাইলে ব্যবহার করা যেতে পারে , সুতরাং এটি সম্ভব যে এই পদ্ধতিটি অন্য মেশিনে ব্যবহৃত হয়েছিল।

  • একটি চলমান ভিম দৃষ্টান্তে, কমান্ডটি সেই ভিএম দৃষ্টান্তে set term=xtermসিটিআরএল-কম্বোসকে কাজ করবে। এক্স ক্লিপবোর্ড সংযোগ বিচ্ছিন্ন করার পার্শ্ব প্রতিক্রিয়া রয়েছে (যেমন @*এবং @+) যে কারণে আমি এখনও বুঝতে পারি না। মজার বিষয় হল, :set term=screenএকটি ভিএম ইনস্ট্যান্স দিয়ে কমান্ডটি কার্যকর করা হলে ক্লিপবোর্ডের পার্শ্ব প্রতিক্রিয়াটি ঘটে $TERM=xterm


এই উত্তরটি ওপির আপডেটগুলি থেকে নেওয়া হয়েছিল। আমি যা করেছি তা হ'ল পুনরায় ফর্ম্যাট করা এবং কিছুটা শব্দবাজি করা।
ফুনেহে

2

অন্তর্নিহিত সমস্যাটি হ'ল screenপ্রকৃত টার্মিনাল ( TERMবাইরের পরিবেশের পরিবর্তনশীল দ্বারা চিহ্নিত screen) এবং এর মধ্যে অনুকরণের মধ্যে থাকা ম্যাপিংটি screenঅসম্পূর্ণ।

আপনি যদি এটি পরীক্ষা করে দেখেন ( vttest বা ট্যাক ব্যবহার করে ), আপনি এর জন্য ঘাটতি লক্ষ্য করতে পারেন

  • রং
  • বিশেষ কী

সেট করে এই সমস্যাগুলি সমাধান করার চেষ্টা করার termক্ষেত্রে .screenrcএটির ঘাটতি রয়েছে যে এটি কেবলমাত্র একটি প্রকৃত টার্মিনালের জন্য কাজ করে, এবং অন্যান্য টার্মিনাল বাস্তবায়নে পোর্টেবল নয়। ডকুমেন্টেশন নোট

শব্দটি কমান্ড ব্যবহার অ-ডিফল্ট উদ্দেশ্যে নিরুৎসাহিত করা হয়।

screen ডকুমেন্টেশন থেকে এই বৈশিষ্ট্যটি ব্যবহার করে, আরও একটি সমাধান রয়েছে (একটি পৃথক ত্রুটিযুক্ত) :

স্ক্রিন যখন নিজের জন্য একটি টার্মিনালের নাম বের করার চেষ্টা করে, এটি প্রথমে পর্দার নামযুক্ত একটি এন্ট্রি সন্ধান করে শব্দটি , যেখানে পদটি আপনার $TERMপরিবর্তনশীলের বিষয়বস্তু । এ জাতীয় কোনও এন্ট্রি উপস্থিত না থাকলে, স্ক্রিন চেষ্টা করে screen(বা screen-w, যদি টার্মিনাল প্রশস্ত হয় (132 কোলস বা আরও বেশি))। এমনকি যদি এই এন্ট্রিটি পাওয়া যায় না তবে এটি vt100বিকল্প হিসাবে ব্যবহৃত হয়।

ncurses স্ক্রিনের ম্যাপিংয়ে সমস্যাগুলি মেরামত করার জন্য এই ক্ষেত্রে বেশ কয়েকটি দরকারী বিকল্প টার্মিনাল বিবরণ সরবরাহ করে eg অনুশীলনে, আমি ব্যবহার করি TERM=xterm-newএবং পর্দা চলাকালীন, ফাংশন কীগুলির ব্যবহারযোগ্য ম্যাপিংটি পাই।

স্ক্রিনের termসেটিংয়ে ফিরে যাওয়া , পরীক্ষায় আপনি খেয়াল করতে পারেন যে ম্যাপিংয়ে এখনও সমস্যা রয়েছে, যা এই বিকল্পগুলিতে সম্বোধন করা হয়েছে। যদি ব্যবহার করে সঠিক টার্মিনাল বিবরণ পাওয়া সম্ভব হয় তবে termএই বিকল্পগুলির জন্য সরল উপাধি হবে screen। তারা না.

ncurses নেই না প্রদান screen.xterm(এসআইসি) কারণ:

  • TERM=xtermএক্সটার্ম থেকে পৃথক টার্মিনাল এমুলেটরগুলির জন্য ব্যাপকভাবে অপব্যবহার করা হয়; এই ম্যাপিংটি যুক্ত করা কেবল সেই পরিস্থিতিকে আরও বাড়িয়ে তুলবে (উদাহরণস্বরূপ দেখুন কেন কেবল "এক্সটার্ম" তে TERM সেট ব্যবহার করবেন না? ncurses FAQ এ)
  • বিকল্প নামটি screen.xtermদূরবর্তী সিস্টেমে ইনস্টল হওয়ার সম্ভাবনা কম ( জুন ২০১৫ থেকে পরিবর্তন মন্তব্যটি টার্মিনাল ডাটাবেসে দেখুন)।

তবে সামগ্রিকভাবে, বিকল্প নাম ব্যবহার termকরা আপনার ব্যবহারের চেয়ে উন্নতি .screenrc: এটি এটি তৈরির চেয়ে বেশি সমস্যার সমাধান করে। বিপরীতটি termসেটিংসের ক্ষেত্রে সত্য ।

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