পুরো বাফারটির জন্য কি কোনও পাঠ্য বস্তু রয়েছে?


28

আমি প্রায়ই নিজেকে ভালো কমান্ড টাইপ এটি gg"+yGবা ggdGএবং কার্সার দুইবার সরাতে করেও এই কাজ করতে আরও কার্যকর উপায় চাই। এমন কোনও আদেশ আছে যা আমি উদাহরণস্বরূপ y[movement]কার্সারটি না সরিয়ে পুরো বাফারটি অনুলিপি করতে ব্যবহার করতে পারি ?

উত্তর:


36

যেহেতু ভিএম বর্তমান বাফারটিকে রেফারেন্স দেওয়ার জন্য শতাংশ চিহ্ন ব্যবহার করে, তাই আপনি সবকিছু দ্রুত পেতে এটি ব্যবহার করতে পারেন।

:%yপুরো :%y+বাফারটিকে ইঙ্ক করে দেবে এটি +রেজিস্টারে ইঙ্ক করে দেবে (এবং সম্ভবত ক্লিপবোর্ডে সরবরাহ করা হবে, যথাযথ বিকল্পগুলির সাথে ভিম সংকলন করা হয়েছিল)।

:%dএবং :%d+মুছে ফেলার জন্য একই কাজ করবে।

এই প্রতিটি ক্ষেত্রে, কার্সার স্থানে থাকে।


বাহ, এই সমস্ত সময় আমি ব্যবহার করে আসছি mmgg"+yG`mএবং কখনও এই ভেবে দেখিনি। ধন্যবাদ, এটি .vimrc এ ঠিক চলছে।
ডোরকনব

@ ডুরকনব চিহ্ন স্থাপন এবং ব্যবহারের পরিবর্তে আপনি C-oফিরে যেতে কেবল দুবার ব্যবহার করতে পারেন।
রুসলান

10

আরেকটি সমাধান হ'ল ভিএম-টেক্সটবজ-পুরো নামে একটি প্লাগইন ব্যবহার করা । ডিফল্টরূপে, এই প্লাগইনটি খালি রেখাগুলির শীর্ষস্থানীয় এবং অনুসরণ ব্যতীত পুরো বাফারের জন্য aeপুরো বাফারের জন্য পাঠ্য অবজেক্ট সরবরাহ করে ie

এই প্লাগইনটি একই লেখকের ভিএম-টেক্সটবজ-ব্যবহারকারীর উপর নির্ভর করে , যা ব্যবহারকারীদের কোনও পাঠ্য অবজেক্টকে আরামে সংজ্ঞায়িত করতে দেয়। আছে অনেক প্লাগিন যে এই ভাল ব্যবহার করা।


8

ডিফল্টরূপে পুরো ফাইলটির জন্য কোনও পাঠ্য বস্তু নেই, তবে এটি ব্যবহার করে তৈরি করা সম্ভব omap। এক্ষেত্রে এটি দেখতে এমন কিছু লাগবে:

onoremap f :<c-u>normal! mzggVG<cr>`z

এটি কীভাবে কাজ করে তা এখানে একটি ব্রেকডাউন রয়েছে:

onoremap f " make 'f' the text object name
:<c-u> " use <c-u> to prevent vim from inserting visual selection marker at the beginning of the command automatically.
normal! " use normal to make key presses ignoring any user mappings
mzggVG<cr>`z " make a marker in register z, select the entire file in visual line mode and enter the normal command, and go back to the z marker

নোট:

Ctrluকমান্ড লাইন মোডে কার্সার অবস্থানের বামে সমস্ত কিছু মুছতে ব্যবহার করা যেতে পারে। এটি করার কারণ হ'ল কারণ আপনি যদি ভিজ্যুয়াল মোড থেকে সরাসরি কমান্ড লাইনে প্রবেশ করেন তবে এটি স্বয়ংক্রিয়ভাবে '<,'>কমান্ড লাইনে প্রবেশ করবে এবং আমরা যা চাই তা তা নয়। আমি আপনাকে অন্য কিছু ব্যবহার করার পরামর্শ দিচ্ছি f, কারণ fসাধারণত লাইনে পরবর্তী অনুসন্ধান করা অক্ষরে যাওয়ার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, বর্তমান লাইনের fiপরবর্তীটিতে iযাবে।

প্রাসঙ্গিক সহায়তা বিষয়:

:help omap-info
:help :normal
:help c_CTRL-U
:help v_:

কার্সারটি একা রেখে এই করার কোনও উপায় আছে কি?
এলোমেলো 832 20

@ র্যান্ডম 832 ``শেষে একটি যুক্ত করা কার্সারটিকে আগের অবস্থানে ফিরিয়ে দেবে।
স্নোরিংফ্রোগ 20

আমি উদ্বিগ্ন যে এটি এর ফলে ইয়াঙ্ক কমান্ডের ক্ষেত্রে প্রয়োগটি প্রয়োগ করবে না। আমি আজ কিছু পরীক্ষা করব।
র্যান্ডম 832

1
আমি ম্যাপিংয়ে একটি মার্কার কমান্ড যুক্ত করেছি, এটি কার্সারটি এখন কোথায় রয়েছে তা ছেড়ে দেওয়া উচিত।
চিরসবুজ

2

টাস্কটি সম্পাদন করার জন্য এখানে কিছু দ্রুত এন 'নোংরা ম্যাপিংস:

nnoremap yY :%yank <c-r>=v:register<cr><cr>
nnoremap dD :%delete <c-r>=v:register<cr><cr>

এখন আপনি যথাযথভাবে ইয়াঙ্ক / ডিলিট করতে yYএবং ব্যবহার করতে পারেন dD। এটি সম্পূর্ণ ফুটিয়ে তোলা পাঠ্য বস্তুটি ব্যবহার করার মতো সুন্দর নয়, তবে কখনও কখনও সহজ সমাধানগুলি সবচেয়ে ভাল।

আরও সহায়তার জন্য দেখুন:

:h :y
:h :d
:h [range]
:h v:register
:h c_ctrl-r
:h @=
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.