পাঠ্যের একটি ব্লক স্থানান্তর করার দ্রুত উপায়


25

এখানে আমি সাধারণত পাঠ্য বা কোডের একটি ব্লকটি অনুলিপি করি:

  1. ভিজ্যুয়াল মোড ( V) সহ ব্লকটি নির্বাচন করুন এবং এটি দিয়ে মুছুন d; বা এটি যদি কেবল একটি একক লাইন থাকে তবে কেবল ব্যবহার করুন dd
  2. যেখানে আমি টেক্সট হতে চান এ যান, আমি খুব পার্থক্য মনে রাখতে হবে বোকা pএবং P, তাই আমি সময় 50% সম্পর্কে এই অধিকার পেতে। (যদি আমার এটি ভুল হয়ে যায়: আবার চেষ্টা করে দেখুন)।
  3. কখনও কখনও, ইন্ডেন্টেশনটি সামঞ্জস্য করা প্রয়োজন, তাই আমি Vআবার সাথে ভিজ্যুয়াল মোডে যাই এবং একই ব্লকটি পুনরায় নির্ধারণ করি এবং এটি ব্যবহার করতে >বা <এটি ঠিক করতে।

কোন সহজ উপায় আছে? কিছু সম্পাদকের মধ্যে আমি দেখেছি যে আপনি যেমন পাঠ্যের একটি ব্লকটি "চয়ন" করতে পারেন এবং এটিকে চারপাশে সরিয়ে নিতে পারেন; এখানে ইমাক্সের একটি উদাহরণ রয়েছে (তবে আমি এটি অন্যান্য সম্পাদকদের মধ্যেও দেখেছি):

এ গিয়ে emacs

অথবা সম্ভবত অন্য কোন (আরও ভাল) উপায় আছে?


খাঁজ বিষয়ে আপনার সাথে পেস্ট করে এটি সমাধান করতে পারে ]pবা [pবদলে pবা P। এইভাবে আপনি যে ব্লকটি পেস্ট করেছেন সেটি স্বয়ংক্রিয়ভাবে চলে যাবে।
গোনালো রিবেইরো

আপনি ড্র ড্র নীল বুবলিং টেক্সটের স্ক্রিনকাস্টটি দেখতে চাইতে পারেন যা ভিএম-অবিবাহিত ব্যবহার করার পরামর্শ দেয় ।
হটস্কে

উত্তর:


13

এর জন্য একটি প্লাগইন রয়েছে: ড্রাগভিসুয়াল.ভিম

এটি কোনও কী কী ডিফল্টরূপে আবদ্ধ করে না, তাই আপনাকে এটি নিজেই করতে হবে। আমি তাদের Control+ এ মানচিত্র করতে চাই Arrow key:

xmap <expr> <C-Left> DVB_Drag('left')
xmap <expr> <C-Right> DVB_Drag('right')
xmap <expr> <C-Down> DVB_Drag('down')
xmap <expr> <C-Up> DVB_Drag('up')

বর্তমান নির্বাচনের সদৃশ করার জন্য এটি একটি বোনাস কী নিয়ে আসে:

xmap <expr> D DVB_Duplicate()

অন্যান্য উত্তরের উপর এই প্লাগইনটির সুবিধা:

  • আপনি যদি প্রথম লাইনের চেয়ে আরও উপরে যাওয়ার চেষ্টা করেন তবে কোনও পাঠ্য অদৃশ্য হয়ে যায় না।
  • আপনি শেষ লাইনের নীচে সরলে এটি ফাইলটি প্রসারিত করবে।
  • বাম / ডানদিকে সরানো কিছুটা ভাল কাজ করে।

এটির পরিপূরক করার জন্য আর একটি কার্যকর কৌশল, এই কী-বাইন্ডগুলি হ'ল:

xnoremap > >gv
xnoremap < <gv

এটি >ভিজ্যুয়াল মোডে থাকাকালীন আপনি ব্যবহারের পরে শেষ চাক্ষুষ নির্বাচনটি পুনরায় নির্বাচন করবেন , যাতে আপনি প্রান্তিককরণটি আরও সহজেই সামঞ্জস্য করতে পারেন (আপনি তীর কীগুলিও ব্যবহার করতে পারেন, তবে এটি এটি একটি চরিত্রের সাহায্যে সরিয়ে ফেলবে, এবং একটিটি নয় shiftwidth)।


1
এর জন্য আরও একটি প্লাগইন রয়েছে যা আমার প্রস্তাবিত প্লাগইনটির লেখক "আমার নিজের ড্রাগভিজুয়ালস.ভিমের অনেক উন্নত পুনর্নির্মাণ" হিসাবে বর্ণনা করেছেন: github.com/zirrostig/vim-schlepp
জে থমসন

8

পদক্ষেপ 3 এর জন্য, আপনি gv=পরিবর্তে ব্যবহার করতে পারেন (এর =অর্থ ইনডেন্ট এবং এর gvঅর্থ "শেষ চাক্ষুষ নির্বাচনটি পুনরায় নির্ধারণ করুন")।

ইমাস আচরণের জন্য, আপনার .vimrc এ কিছু ম্যাপিং যুক্ত করা খুব সহজ হবে:

vnoremap <down> dpV`]
vnoremap <up> dkPV`]

তারপরে আপনি ভিজ্যুয়াল লাইন নির্বাচনের চারদিকে ঘোরাতে উপরে এবং নীচের তীর কীগুলি ব্যবহার করতে পারেন। (অবশ্যই, আপনি তীরগুলি ঘৃণা করলে আপনি বিভিন্ন কীগুলিতে ম্যাপও করতে পারেন))

(আপনি সাধারণ ভিজ্যুয়াল নির্বাচনের সাহায্যে এটি করতে পারেন এবং এগুলি বাম এবং ডানেও সরিয়ে নিয়েছেন: vnoremap <left> dhPgvhohoএবং vnoremap <right> dpgvlolo))


gvশেষ ভিজ্যুয়াল নির্বাচনের দিকে যায়, যা এই ক্ষেত্রে মুছে ফেলা অনুচ্ছেদ হবে। আমি কী মিস করছি?
রবার্ট স্মিথ

4

চারদিকে লাইন সরানোর জন্য আপনি কিছু কী পুনরায় তৈরি করতে পারেন। উদাহরণস্বরূপ, তীরগুলি উপরে এবং নীচে ব্যবহার করা হয় যদি আপনি প্রায় কাছাকাছি চলতে ব্যবহৃত হয় hjkl

যেমন .vimrc

nnoremap <down> :m .+1<CR>==
nnoremap <up> :m .-2<CR>==
vnoremap <down> :m '>+1<CR>gv=gv
vnoremap <up> :m '<-2<CR>gv=gv

:m, একটি লাইন সরানোর জন্য সাধারণ কমান্ড

+1বা -2উপরে বা নীচে একটি লাইন নির্দেশ করতে (-1 লাইন একই জায়গায় রাখে)

gvVISUALমোডে আবার একই পাঠ্য নির্বাচন করতে

এই সমাধানটি নিবন্ধগুলিতে হস্তক্ষেপ করে না, সুতরাং অনুলিপি করা কোনও পাঠ্য এখনও পাওয়া যাবে, পাশাপাশি সঠিক ইনডেন্টেশন সেট করার জন্য কোডটি পুনরায় ফর্ম্যাট করুন etc.


এটি দুর্দান্ত, তবে আমার পক্ষে নয়, যেহেতু আমি ব্যবহার করা পছন্দ করি না =(এটি প্রায়শই আমার জন্য অনেক বেশি সম্পর্কযুক্ত বিন্যাস পরিবর্তন করে)।
মার্টিন টর্নয়েজ

4

এটি করার সবচেয়ে সহজ উপায়টি এখানে ডকুমেন্টেড: http://vimrcfu.com/snippet/77

আপনার .vimrc এ নিম্নলিখিতটি রাখুন

vnoremap J :m '>+1<CR>gv=gv
vnoremap K :m '<-2<CR>gv=gv

এটি কি 8 ই ফেব্রুয়ারির খেলবেনের উত্তর হিসাবে একই বলে মনে হচ্ছে ?
মার্টিন টর্নোইজ


3

এই জন্য কয়েক প্লাগিন আছে, কিন্তু আমি পছন্দ টিম পোপ এর তেজ-অটুট ( GitHub ) (ইঙ্গো Karkat LineJuggler অনুরূপ)।

আপনি দৃশ্যত আপনার পাঠ্যের ব্লকটি নির্বাচন করুন তারপরে ]eব্লকটিকে নীচের দিকে ( [eঅন্য দিকে) সরাতে (এক্সচেঞ্জের জন্য) করুন। .ক্রিয়াটির পুনরাবৃত্তি করতে ব্যবহার করুন ( আপনার কাছে পুনরাবৃত্তি রয়েছে vভিম ইনস্টল করেছেন আপনি না)। আপনি যদি খুব বেশি দূরে যান তবে কেবল তার মাধ্যমে পূর্বাবস্থায় ফিরে যান u

এখন ব্যক্তিগতভাবে আমি ভাবি pএবং Pএগুলি সাধারণ কমান্ড যা খারাপ অভ্যাস তৈরির আগে সেগুলি শেখা ভাল। তারপরে আপনি ]pএকই ইনডেন্টে পেস্ট করতে ব্যবহার করতে পারেন । আপনি যদি অবিবাহিত ব্যবহার করছেন তবে আপনি >pএকটি ইন্ডেনশন স্তরকে আরও গভীরভাবে =pপেস্ট করতে বা পেস্ট করতে এবং পুনরায় ফর্ম্যাট করতে পারেন।

আপনার যদি মনে রাখতে সমস্যা হয় pএবং Pতবে এটি আপনাকে আদেশ oOআদেশের দিক থেকে ভাবতে সহায়তা করতে পারে যা এক ধরণের প্রতিসাম্য।

অন্যরা যেমন উল্লেখ করেছে যে আপনি gvচাক্ষুষ নির্বাচন পুনরায় নির্ধারণ করতে ব্যবহার করতে পারেন । তবে আপনি যদি স্রেফ পাঠ্য / পেস্ট করে থাকেন তবে আপনি আপনার চাক্ষুষ নির্বাচনটি হারাবেন। প্রতিটি পরিবর্তন কারণ অস্থির হবেন না (এবং হ্যাচকা টান লাগে!) সেট হবে '[এবং ']পরিবর্তিত এলাকা জুড়ে। সুতরাং আপনি মাধ্যমে প্রবেশ করতে পারেন >'](পড়ুন: শেষ পরিবর্তনের শেষ অবধি ডান শিফট করুন) এবং .সঠিক স্থানটিতে পাঠ্য না পাওয়া পর্যন্ত ইন্ডেনশনটির পুনরাবৃত্তি করতে ব্যবহার করুন ।

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

:h p
:h P
:h ]p
:h o
:h O
:h .
:h u
:h >
:h ']
:h gv

2

আপনি যদি পাঠ্যটির ব্লকটি সরিয়ে নিতে চান এমন লাইন নম্বরটি যদি জানেন তবে আপনি :moveকমান্ডটি দিয়ে সেখানে সীমাবদ্ধ করতে একটি পরিসর বা ভিজ্যুয়াল নির্বাচন ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ, যদি আমার কাছে নিম্নলিখিত ফাইল থাকে:

1 aaa
2 bbb
3 ccc
4 ddd

এবং আমি সি এর লাইনের পরে a এর রেখাটি সরিয়ে নিতে চাই, আমি কার্সারটিকে একটি এর লাইনে রেখে প্রবেশ করবো :m3এবং লাইনটি তখন স্থানান্তরিত হবে।

এটি +/- অফসেটগুলির সাথেও কাজ করে। উপরের উদাহরণে, একই ফলটি :m+22 লাইনটি নীচে সরানোর সাথে সম্পন্ন করা যেতে পারে ।

পাঠ্যের ব্লকগুলির জন্য, কেবলমাত্র পার্থক্যটি একটি ব্যাপ্তি বা নির্বাচনের সাথে যুক্ত হচ্ছে। ফাইলের শেষে এএএ এবং বিবিবি লাইনগুলি সরাতে, একটি কমান্ড ব্যবহার করুন :1,2m$( like = শেষ লাইন) অথবা দৃশ্যমানভাবে লাইনগুলি নির্বাচন করুন এবং :m$


1
আরও টিপসের :moveজন্য vim.wikia.com/wiki/ মুভিং_লাইনস_উপ_অর_ডাউনওয়ান বা টিপ 29 টি ডুপ্লিকেট বা ': টি' এবং ': মি' ব্যবহার করে বুকের ব্যবহারিক ভিমের কমান্ডগুলি ডি নীল ব্যবহার করে।
হটস্কে

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