আমি কি ভিএম এ আটকানো গতি করতে পারি?


12

আমি একটি ওয়েব পৃষ্ঠার বাইরে এইচটিএমএলের একটি অংশ অনুলিপি করেছি এবং এটি একটি ফাইলে সংরক্ষণ করতে চেয়েছিলাম। তার জন্য আমি vim একটি টার্মিনাল উইন্ডোতে একটি নতুন অধিবেশন শুরু করেছি , কমান্ডলাইনে একটি (নতুন) ফাইলের নাম নির্দিষ্ট করে, iসন্নিবেশ মোডে পেতে টিপুন এবং তারপরে CtrlShift+ Vএবং [-- INSERT --]নীচে প্রদর্শিত হওয়ার জন্য অপেক্ষা করলাম ...

vimবেশ কয়েক সেকেন্ড পরে যেমন প্রতিক্রিয়াশীল ছিল তেমন, আমি অ্যাপ্লিকেশনগুলি থেকে 'টেক্সট এডিটর' খুললাম → অ্যাকসেসরিজ মেনুটি পাঠ্যটি আটকানো হয়েছে (যা এক সেকেন্ডের একাংশের মধ্যে দেখা যায়, এটি একটি নতুন নামে সংরক্ষণ করে, বন্ধ হয়ে যায় এবং ভিম সেশনটি হত্যা করে যে এখনও 1.5 মিনিট পরে করা হয়নি, পাঠ্যের পরিমাণটি 3200 লাইনে 186 কে ছিল, আমি অতিরিক্ত বলি না বা অত্যধিক দীর্ঘ লাইনও না।

এই ধরণের সন্নিবেশগুলিকে গতিবদ্ধ করার কোনও উপায় আছে vimএবং / অথবা এর কোনও ব্যাখ্যা আছে কেন অন্যথায় ভয়াবহ এবং মাউসমুখী, পাঠ্য সম্পাদককে ব্যবহারের তুলনায় এটি এত ধীর?

(সেই অনুযায়ী% সিপিইউ top5% এর উপরে আসবে না, যদিও সিস্টেমে আমার কিছু প্রসেসর ফ্রি রয়েছে, সুতরাং এটি কোনও আই / ও বাউন্ড সমস্যা হতে পারে, কোনও ফাইল থেকে একই পাঠ্য পড়ার সময় উপস্থিত নেই)

সংস্করণ তথ্য:
উবুন্টু 12.04
ভিম: 7.3, উবুন্টু 12.04
বাশ দ্বারা সরবরাহিত প্যাচগুলি সহ : 4.2.25
জিনোম-টার্মিনাল: 3.4.1.1


1
আমি মনে করি এটা ধীর বি / ইনপুট পার্স ও ফরম্যাট করা চেষ্টা করতে হয় c ইত্যাদি আমি নিশ্চিত না এই কাজ করতে কিন্তু আপনি সাময়িকভাবে নিষ্ক্রিয় করতে পারে যে বৈশিষ্ট্য W / এ অনুমান করা হবে বিকল্পের vimতারপর পেস্ট করি, এবং এটি আবার সক্ষম করুন। এছাড়াও :set pasteবৈশিষ্ট্যটি ব্যবহার করে কী কী জিনিসগুলির উন্নতি হয় তা দেখুন। দেখুন :help pasteএটি বর্ণনা করে যে কীভাবে vimবি / ডাব্লু টাইপিং এবং আটকানো যায় না describes
slm

আমি viপড়ার সময় ফাইলটি বিশ্লেষণ করার চেষ্টা করব (@ l0b0 প্রস্তাবিত উপায়টি সংরক্ষণ করার পরে), পাশাপাশি। তবে তা দ্রুত কাজ করে।
অ্যান্থন

সত্য, তবে আমি ধারণা করছি যে এটি ইতিমধ্যে পার্স করা সমস্ত কিছুকে নতুন করে ছড়িয়ে দিতে হবে the নতুন চরিত্রটি আপনি এটি আটকে দেওয়ার সাথে সাথে। এটি মনে হয় যে আপনি যখন একটি ফাইলও সম্পাদনা করছেন তখন একটি ডিগ্রীতে কী ঘটছে going
slm

:set pasteসত্যিই একটি পার্থক্য করতে বলে মনে হচ্ছে না (আমি একটি বিরাম ঘড়ি, শুধু দেওয়াল-ঘড়ি ব্যবহার করছি না)।
অ্যান্থন

ঠিক আছে, কেবল একটি চিন্তা ছিল ...
slm

উত্তর:


14

ক্লিপবোর্ডের পাঠ্যটি দ্রুত ফাইল করার জন্য সংরক্ষণ করতে, আপনি চালাতে পারেন cat > file.txt, সামগ্রীগুলি আটকান, তারপরে Ctrl- টিপুন d

যদি আপনি xsel ইনস্টল করেছেন, আপনি ভিমে:r !xsel "প্রাথমিক" (যেমন। "মাউস") নির্বাচন :r !xsel -bসন্নিবেশ করতে বা "ক্লিপবোর্ড" ( Ctrl- c) বাফার সন্নিবেশ করতে করতে পারেন । আপনি নির্বাচন xsel >file.txtবা সরাসরি কোনও ফাইলে সংরক্ষণ করতে পারেন xsel -b >file.txt। এটি পৃথক আটকানো + EOF ক্রিয়াকলাপের প্রয়োজনীয়তা সরিয়ে দেয় এবং টার্মিনালে পুরো অনুলিপি বাফার মুদ্রণ এড়িয়ে যায়।

আপনার যদি এক্সেল ব্যতীত এক্সক্লিপ না থাকে তবে সংশ্লিষ্ট কমান্ডগুলি xclip -outপ্রাথমিক নির্বাচনের xclip -out -selection clipboardজন্য বা ক্লিপবোর্ড বাফারের জন্য।


1
ধন্যবাদ, এটি কমপক্ষে মাউসটিতে ফিরে না এসে কাজ করে এবং ভিএম-তে ফাইলটি সন্নিবেশ করানো (উদাহরণস্বরূপ যখন আমি খালি ফাইল দিয়ে শুরু করি না) যথেষ্ট দ্রুত হয়।
অ্যান্থন

আমি কেন বুঝতে পারছি না কেন এটি সিটিআরএল + শিফট + ভি-তে আবদ্ধ হতে পারে না, এই সমস্তটির কোনও ধারণা নেই no
মিচিড

2

এটি একটি বাফার ফ্লাশ-থেকে-ডিস্ক সমস্যা। ভিম আপনার কাজটি সুরক্ষিত রাখার চেষ্টা করে এবং ধরে নেয় না যে আপনি প্রতি সেকেন্ডে কয়েক হাজার অক্ষর টাইপ করতে পারেন। :help swap-fileবাফারিং সম্পর্কে কিছু বিশদ পড়ুন । আপনার সমস্যার সমাধান হ'ল:

উইম এর সোয়াফিল ফাইলটি এটি দিয়ে বন্ধ করুন:

vim -n <your file>

বা পেস্টের আগে ভিএম এর মধ্যে থেকে:

:set noswapfile

দেখুন :help swapfileআরো বিস্তারিত জানার জন্য।

অন্য বিকল্পটি হ'ল সোয়াপ ফাইলের ডিস্কে সিঙ্কিংটি কেবলমাত্র বন্ধ করে দেওয়া যায় :set swapsync=তবে এই বিকল্পটি পূর্বাবস্থায় আরো কী-স্ট্রোক নেয় এবং আমি অলস। :)

সোয়াপ বন্ধ করা সাধারণ ক্রিয়াকলাপের জন্য নিরাপদ নয়! পেস্টের সাথে সাথেই , হয় ব্যবহার করুন :set swapfileবা :set swapsync=fsyncস্বাভাবিক আচরণে ফিরে যেতে (যদিও প্রযুক্তিগতভাবে, স্বাভাবিক আচরণটি সিঙ্ক হয়ে থাকতে পারে এবং ম্যানসিঙ্ক নয় , :set swapsync?আপনি যদি এই পথে যেতে চান তবে আগেই পরীক্ষা করে দেখুন)।


1
এটি আমার পক্ষে জিনিসগুলিকে গতি দেয়নি ...
এলিগ

1

আপনি যদি xterm_clipboardবৈশিষ্ট্য আপনি ব্যবহার করতে পারেন *এবং +রেজিস্টার। এই এক্স 11 প্রাথমিক নির্বাচন বাফার এবং ক্লিপবোর্ড (যথাক্রমে) এর সাথে ইন্টারফেস রেজিস্টার করে।

সুতরাং যদি আপনি CTRL+ এর মাধ্যমে কোনও কিছু অনুলিপি করেন তবে আপনি cএটি ভিমে দিয়ে পেস্ট করতে পারেন "+p

আপনি যদি অনুলিপি না করে কেবল হাইলাইট করেন তবে আপনি এটি দিয়ে পেস্ট করতে পারেন "*p
আপনি *বাফারটি ডিফল্ট বাফার করেও করতে পারেন :set clipboard=unnamed। তারপরে যে কোনও ইয়াঙ্ক ( y), পেস্ট ( p), ইত্যাদি যা রেজিস্টার নির্দিষ্ট করে না তা রেজিস্টার ব্যবহার করবে *। Vim 7.3.74 এছাড়াও যুক্ত করেছে clipboard=unnamedplus, যা নিবন্ধটি +ডিফল্টরূপে ব্যবহার করবে ।

এছাড়াও আপনি yanking দ্বারা প্রাথমিক নির্বাচন ও ক্লিপবোর্ড বাফার মধ্যে জিনিষ অনুলিপি করতে পারেন উদাহরণস্বরূপ: "+yy

 

দ্রষ্টব্য, যে হিসাবে উল্লিখিত, এই ক্ষমতা সমস্ত xterm_clipboardবৈশিষ্ট্য প্রয়োজন । আপনি :versionভিএম এর ভিতরে বা vim --versionশেল থেকে এই বৈশিষ্ট্যটি দেখতে পেয়েছেন এবং সন্ধান করতে পারেন +xterm_clipboard। যদি এটি বলে -xterm_clipboard, আপনার কাছে এটি নেই এবং ভিমটি পুনরায় সংকলন করতে হবে।


আমার এই বৈশিষ্ট্যটি নেই ভিএম এক্সটার্মের অধীনে চলছে না এমন কি সাহায্যের পুনরায় সংযোজন করবে? (আমি জিনোম-টার্মিনাল ব্যবহার করছি)।
অ্যান্থন

@ অ্যানটন আপনি যদি জিইআইআই ভিআইএম ব্যবহার করেন তবে আমার বিশ্বাস রেজিস্টারগুলিও সক্ষম রয়েছে। xterm_clipboardশুধুমাত্র যদি টার্মিনাল থেকে ভিএম চালানো হয়।
প্যাট্রিক

এটি কেবল পাঠ্য, কোনও জিইউআই ভিআইএম নয়, তবে চলমান নয় xterm
অ্যান্থন

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