আমি কীভাবে দুটি লাইনে ভিমে বদল করব?


94

আমার আছে এটা:

pick 887b66f add 222 Dziewiecsil to flowers new title
pick dc331cb new name of beginning commit

এবং আমি এটি পেতে চাই:

pick dc331cb new name of beginning commit
pick 887b66f add 222 Dziewiecsil to flowers new title

কীবোর্ড শর্টকাটগুলি ব্যবহার করে তাড়াতাড়ি করার কোনও উপায় আছে কি?


আপনি যদি ভিআইএমের সাথে পরিচিত না হন তবে আপনি আলাদা সম্পাদক ব্যবহার করার কথা বিবেচনা করতে পারেন। আপনি সম্পাদনাটি কেবল গিটের জন্যই ব্যবহার করতে পারেন git config --global core.editor <whatever>, বা একসাথে অনেকগুলি জিনিস (গিট সহ) নিজের মধ্যে অন্তর্ভুক্ত করে কনফিগার export EDITOR=<whatever>করতে পারেন .bashrc
সোভেন মারনাচ

উত্তর:


160

পরেরটি দিয়ে বর্তমান লাইনটি অদলবদল করতে, ddpকমান্ড মোডে থাকাকালীন টাইপ করুন।

  • ডিডি - মুছে ফেলুন লাইন (প্রকৃতপক্ষে অন্য সম্পাদকদের কাটা বলা হয়) এবং এটি রেজিস্টারে সংরক্ষণ করুন
  • পি - রেজিস্টার থেকে পেস্ট লাইন

4
প্রথম লাইনে কার্সারটি সরান, তারপরে টাইপ করুন ddp। আপনি যদি এখনও কমান্ড মোডে না থেকে থাকেন তবে কমান্ড মোডে Escযেতে হিট করুন।
সোভেন মারনাচ

32
ddবর্তমান রেখাটিকে "রেজিস্টারে" অনুলিপি করার পরে মোছা করে। বর্তমান লাইনের পরেp আপনার বাফারে নিবন্ধের সামগ্রীগুলি অনুলিপি ("রাখে") একইভাবে, আপনি দুটি অক্ষর বা দুটি শব্দের সাথে অদলবদল করতে পারেন । xpdwwP
কিথ থম্পসন

দুর্ভাগ্যক্রমে, কিথথম্পসন দু'টি শব্দ বদলানোর মতো সহজ নয়।
সিএস

@ সিএসস আপনি কি এই সত্যটির উল্লেখ করছেন যে dwwPদুটি শব্দ একটি লাইনের শেষে থাকলে একইভাবে কাজ করে না? (এবং নিম্নলিখিত লাইনের প্রথম শব্দের সাথে এক লাইনে শেষ শব্দটি অদলবদল করা আরও জটিল))
কিথ থম্পসন

4
@ কিথ থমসন হ্যাঁ, যদিও আমার মন্তব্য করার পরে আমি খুব খারাপ অনুভব করেছি কারণ এটি একটি আক্ষরিক প্রান্ত;)
সিএস

52

ddবর্তমান লাইনটি মুছে দেয়, তারপরে আপনি মুছে ফেলা লাইনটি ব্যবহার করে পেস্ট করতে পারেন p। ব্যবহার করার পরেও অন্য উপায় আছে mmআপনি যেমন লাইন প্রায় সরানো যেতে পারে সঙ্গে

:m 1 বর্তমান লাইনটি 1 লাইনের পরে সরানো হবে

:m 0 বর্তমান লাইনটিকে শীর্ষে স্থানান্তরিত করবে

:m $ বর্তমান লাইনটি নীচে সরানো হবে

আপনার উদাহরণে, কার্সারটি প্রথম লাইনে রাখুন এবং টাইপ করুন :m $

আরও তথ্য: http://vim.wikia.com/wiki/ মুভিং_লাইনস_উপ_অর_ডাউন


4
অ ভিম "নেটিভ" এর ব্যাখ্যাটির জন্য ধন্যবাদ :-)
ব্রুনো বিরি

4
এই উত্তরটি আমি আমার ভিএম সম্পর্কে আমার জ্ঞানকে প্রসারিত করতে চাইছিলাম।
ফেমেলো খেঠো

ধন্যবাদ! এই উত্তরটি আমি খুঁজছি। ভিজ্যুয়াল মোড ব্যবহার করে একই সময়ে একাধিক লাইন সোয়াইপ করার সময় এটি এমনকি হ্যান্ডিয়ার হয়ে উঠতে পারে।
করিম জিরোদি

8

এই প্রশ্নটি বেশ পুরানো এবং উত্তর হিসাবে চিহ্নিত হিসাবে চিহ্নিত করা সত্ত্বেও, আমি উত্তরটি এমনটি দিয়ে প্রসারিত করতে চাই যে আপনি সাধারণ মোড কমান্ডগুলি ব্যবহার করতে পারেন, যা সুইভেন মার্নাচের দ্বারা সরবরাহ করা হয়েছিল nnoremap:

:nnoremap <C-Up> <Up>ddp<Up>
:nnoremap <C-Down> ddp

এটি আপনাকে আপনার ফাইলের মধ্যে Ctrl+ Upএবং Ctrl+ সহ লাইনগুলি স্থানান্তর করতে দেয় Down। তবে এটি @"নিবন্ধকে ওভাররাইট করে দেবে , এটি আপনার সর্বশেষ অনুলিপিযুক্ত স্ট্রিং / শব্দ / চিঠি / ইত্যাদি সঞ্চয় করে। সুতরাং আগে "(রেজি) যুক্ত করে ddএবং pআদেশগুলি আমরা এটি ঠিক করতে পারি:

:nnoremap <C-Up> <Up>"add"ap<Up>
:nnoremap <C-Down> "add"ap

এখানে আমরা রেজিস্টারে "aআমাদের লাইনটি সংরক্ষণ করার জন্য মুছে ফেলা এবং আটকানোর কমান্ডগুলি যুক্ত করব @a, সুতরাং আপনার ডিফল্ট অনুলিপি নিবন্ধটি ওভাররাইট করা হবে না। তবে এটি @aনিবন্ধের বিষয়বস্তুগুলিকে ওভাররাইট করতে পারে (কে জানে, তবে আপনি এটি আপনার ব্যবহারের ক্ষেত্রে গুরুত্বপূর্ণ কোনও কিছুর জন্য ব্যবহার করতে পারেন তবে এই পদক্ষেপটি বিড়ম্বনা, আপনি চাইলে এটি এড়িয়ে যেতে পারেন), আসুন এটিও ঠিক করুন:

:nnoremap <silent><C-Up> :let save_a=@a<Cr><Up>"add"ap<Up>:let @a=save_a<Cr>
:nnoremap <silent><C-Down> :let save_a=@a<Cr>"add"ap:let @a=save_a<Cr>

( <silent>নীচে বার্তা-লাইনে আমাদের কমান্ডগুলি প্রতিধ্বনিত করা রোধ করা দরকার))

এখন আমাদের দুটি ম্যাপিং রয়েছে যা আমাদের কীবোর্ড শর্টকাটগুলি সহ ফাইলের মধ্যে লাইন স্থানান্তর করতে দেয়। আপনি বোতামগুলি পুনরায় সংজ্ঞায়িত করতে পারেন, আমি Alt+ j/ ব্যবহার করি k, যা হবে <A-j>এবং <A-k>সেই আদেশগুলির জন্য। তবে সমস্ত টার্মিনাল এমুলেটরগুলি অল্ট কী ম্যাপিংগুলি আফাইক সমর্থন করে না।


2

উদাহরণ:

  1. one
> 2. two

সহ :m-2, স্যুইচ করুন (বর্তমান লাইন - 2)

> 2. two
  1. one

সঙ্গে :m+1সুইচ (বর্তমান লাইন + 1)

  1. one
> 2. two

আপনি চাইলে এটি ম্যাপ করতে পারেন।



এটি ডিফল্ট উত্তরের চেয়ে উত্তম উত্তর
অ্যালেক্স বিন ঝাও

0

ভিম উইকিয়া পৃষ্ঠায় প্রস্তাবিত ম্যাপিংগুলি কী কী সংমিশ্রণগুলি ম্যাপ করার জন্য সর্বোত্তম উপায় যা সাব্লাইম এবং অন্যান্য সম্পাদকরা এই বৈশিষ্ট্যটি বাস্তবায়নের উপায়কে অনুকরণ করে।

এটি সরানোর পরে একটি ইন্ডেন্টেশন ক্রিয়াকে অন্তর্ভুক্ত করে, এটিও দুর্দান্ত (এটি দ্বিগুণ সমান) == চিহ্ন, যদি আপনি এটি না চান)।

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

nnoremap <A-j> :m .+1<CR>==
nnoremap <A-k> :m .-2<CR>==
inoremap <A-j> <Esc>:m .+1<CR>==gi
inoremap <A-k> <Esc>:m .-2<CR>==gi
vnoremap <A-j> :m '>+1<CR>gv=gv
vnoremap <A-k> :m '<-2<CR>gv=gv

আমি ব্যক্তিগতভাবে এগুলিকে আমার ম্যাক <D-J>এবং <D-K>এ ম্যাপ করেছি , কীগুলির পরিবর্তে <A-কোন মানচিত্রের পরিবর্তে Alt। এইভাবে আমি Cmd+ Shift+ j/ ব্যবহার করি k, যা আমার নখদর্পণে আরও প্রাকৃতিক লাগে।

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