কীভাবে ভিএম দিয়ে নতুন লাইনে আটকানো যায়?


144

আমাকে প্রায়শই কিছু জিনিস ভিএম-তে একটি নতুন লাইনে আটকে দিতে হয়। আমি সাধারণত যা করি তা হ'ল:

o<Esc>p

যা একটি নতুন লাইন সন্নিবেশ করায় এবং সন্নিবেশ মোডের চেয়ে শেষ পর্যন্ত আমাকে সন্নিবেশ মোডে রাখে এবং শেষ পর্যন্ত আটকায়।

তিনটি কীস্ট্রোক। খুব দক্ষ নয়। আরও ভাল ধারণা?


8
3 কীস্ট্রোক দক্ষ নয়?
gtd

60
1 বা 2 আরও ভাল হবে :) সর্বাধিক দক্ষতার জন্য না হলে কেন ভিএম ব্যবহার করবেন?
স্থির_আরত্তি

2
অনুলিপি করা সামগ্রীটি যদি নতুন লাইনে শেষ হয় তবে এটি একটি অতিরিক্ত নিউলাইনও ফলাফল করে।
জোনাথন ডাব্লু।

1
@gtd একটি সাধারণ সম্পাদক <ইন্টারনেট> <সিভি> নিয়ে কাজ করেন। দুটি কীস্ট্রোক।
ব্যবহারকারী 4052054

1
@ ব্যবহারকারী 4052054 না, এটি একই কাজ করে না, আপনি / লাইনে যেখানেই লাইনে থাকুন না কেন, সাধারণ সম্পাদকে আপনাকে প্রথমে লাইনের শুরুতে বা শেষে যেতে হবে। তদ্ব্যতীত, আপনি যদি একটি সম্পূর্ণ লাইন অনুলিপি করছেন, তবে পুরো জিনিসটি কেবল একটি লাইন সন্নিবেশ করার জন্য একটি কীস্ট্রোক হয়ে যায়, যা কোডিংয়ের ক্ষেত্রে অনেক বেশি সাধারণ প্রস্তাব।
জিটিডি

উত্তর:


71

এর কিছুক্ষণ পরেই :help pবলা হয়েছে:

:[line]pu[t] [x]    Put the text [from register x] after [line] (default
                    current line).  This always works |linewise|, thus
                    this command can be used to put a yanked block as
                    new lines.

:[line]pu[t]! [x]   Put the text [from register x] before [line]
                    (default current line).

দুর্ভাগ্যক্রমে এটি আপনার বর্তমান সমাধানের চেয়ে কম নয় যদি না আপনি কোনও ভিন্ন উত্তরে প্রস্তাবিত পরামর্শ অনুসারে কিছু কীবোর্ড মানচিত্রের সাথে এটি একত্রিত করেন। উদাহরণস্বরূপ, আপনি এটি কোনও কী (এমনকি p) তে মানচিত্র করতে পারেন :

:nmap p :pu<CR>

2
আমি এটি জানি, এবং আমি এটি ব্যবহার করি, তবে এটি আমি যা চাইছি তা নয়, কারণ কখনও কখনও আপনি যা অনুলিপি করছেন তাতে কোনও এলএফ থাকে না। যদি কোনও "নতুন লাইনে পেস্ট করুন" কমান্ডটি থাকে তবে আপনি যে বিষয়বস্তুটি পেস্ট করবেন তা নির্বিশেষে এটি কাজ করবে, সুতরাং আপনাকে এটি নিয়ে ভাবতে হবে না।
স্থির_আর্টি

5
ঠিক আছে, :pu[t]বর্তমান লাইনের পরে :pu[t]!পাঠ্যটিকে একটি নতুন লাইনে রাখবে, বর্তমান লাইনের আগে পাঠ্যটিকে একটি নতুন লাইনে রাখবে। আমি আমার উত্তর অনুসারে সম্পাদনা করব। (হুরের জন্য :help p।)
বোম্বে

2
আমার বর্তমান সমাধানের চেয়ে সত্যই ভাল নয়, তবে আমি মনে করি এটি আমার প্রশ্নের সেরা উত্তর।
স্থির_আর্টি

4
একই সংখ্যক কীস্ট্রোক থাকা অবস্থায়, আমি মনে করি এটি আরও কার্যকর বলে মনে হচ্ছে। o <Esc> পি অনুভূত মনে হয়, যদিও এটি হয় না।
মার্ক স্টোরি

2
আপনি নিজেই পি-র সহ যে কোনও কীতে কমান্ডটি মানচিত্র করতে পারেন: :nmap p :pu<CR>এটি আপনার .vimrc ফাইলে রাখুন এবং চলে যাবেন :)
ক্যাপি ইথেরিয়েল

55

বিকল্প:

1) yyপুরো লাইনটি রেখার জন্য ব্যবহার করুন (লাইন চরিত্রের শেষ সহ)। pতারপরে বর্তমানের পরে নতুন লাইনে রেখাটি আটকানো হবে এবং P( Shift-P আটকানো হবে ) বর্তমান লাইনের উপরে পেস্ট করবে।

2) একটি ম্যাপিং করুন: তারপরে এটি কেবল এক বা দুটি কী:

:nmap ,p o<ESC>p
:nmap <F4> o<ESC>p

3) ম্যাপিংয়ের ফাংশন সংস্করণ (সত্যিই অপ্রয়োজনীয়, তবে কেবল সম্পূর্ণতার জন্য):

:nmap <F4> :call append(line('.'), @")<CR>

" This one may be a little better (strip the ending new-line before pasting)
:nmap <F4> :call append(line('.'), substitute(@", '\n$', '', ''))<CR>

:help let-register
:help :call
:help append()
:help line()
:help nmap

2
ঠিক আছে, আমি অনুমান করি আমি একটি ম্যাপিং করব। আমি কেবল আশা করছিলাম যে কোনও স্ট্যান্ডার্ড সমাধান হতে পারে: - / আপনার উত্তরের জন্য ধন্যবাদ!
স্থির_আর্টি

2
@ এআই: ', পি' (',' কে আমার <লিডার> হিসাবে ম্যাপ করা হয়েছে) ব্যবহার করা আমার মতে সেরা সমাধান। আপনি এমনকি সহজে ব্যবহারের ফাংশন সরবরাহ করেছেন। :) দুর্দান্ত!
এখনও কেউ আপনাকে এমএস-ডস

30

বাফারের <C-R>নামটি পরে পেস্ট করতে বাফারটি ইনসার্ট মোডে পেস্ট করতে পারেন । ডিফল্ট বাফার হ'ল "তাই আপনি করতেন

o<C-R>"

আমি দেখতে পেয়েছি যে আমি <C-R>"খুব ঘন ঘন ব্যবহার করি এবং <C-F>এটি আমার ভিএমআরসি- তে আবদ্ধ করি :

inoremap <C-F> <C-R>"

2
এটি দুর্দান্ত কারণ এটি অনুলিপিটি সঠিক রাখে যদি অনুলিপি করা লাইনটি ইন্টেন্ট করা না হয়।
কর্নস্মিথ

24

এটি এখনও তিনটি কীস্ট্রোক ব্যবহার করে তবে আমি এটি ইস্কের চেয়ে সহজ বলে মনে করি:

o<Alt-p>

যেহেতু আপনি ওকে আঘাত করার পরে আপনি সন্নিবেশ মোডে রয়েছেন, তাই আল্ট সংশোধক আপনাকে কোনও কমান্ড ব্যবহার করার অনুমতি দেবে যেন আপনি না।


2
আপনি যখন একটি নতুন লাইনে "d $" দিয়ে লাইনের ভিতরে কাটা
ইয়ঙ্ক স্টেথটি

দুঃখিত, তবে এটি ইনডেন্টটি রাখে না, পরিবর্তে এটি লাইনের শুরুতে আটকায়।
মাইকেল গোল্ডস্টেইন

কেউ ম্যাকের জন্য এই পদ্ধতিটি বিস্তারিতভাবে বর্ণনা করতে পারেন (কোনও ওয়েল নেই)?
লি হোনান

@Lihaonan আপনার প্রশ্নটি 8 মাস আগে থেকে, আশা করছি আপনি ইতিমধ্যে দেখেছি stackoverflow.com/q/7501092/5407634
m_mlvx

12

এই প্লাগইনটি ব্যবহার করে: https://github.com/tpope/vim-unimpaired

]pনীচের লাইনে আটকান

[pউপরের লাইনে আটকান

সুবিধাদি:

  • সমস্ত ইয়ঙ্কযুক্ত পাঠ্য (শব্দ, লাইন, চরিত্র, ইত্যাদি) এ কাজ করে
  • চারপাশের পাঠ্যের ইনডেন্টেশনের সাথে মেলে পেস্ট করা পাঠ্যকে প্রবেশ করে
  • 3 এর পরিবর্তে 2 কী-স্ট্রোক এবং অনেকগুলি "সহজ" স্ট্রোক
  • দ্রুত

1
আমার খুব প্রিয়। tpope/vim-unimpairedএটি কাজ করার জন্য আপনার প্রয়োজন দরকার উল্লেখযোগ্য worth
অ্যালেক্সটস

1
আহ আমি ইনস্টল করেছি এতদিন আগে আমি এটি সম্পর্কে ভুলে গেছি। অনুস্মারক জন্য ধন্যবাদ!
Crogers

9

ব্যক্তিগতভাবে আমি এ জাতীয় (সিআর) এর মতো নামকরণ করেছি :

nmap <CR> o<Esc>k

... এই ভিম উইকিয়া নিবন্ধের উপর ভিত্তি করে ।

এইভাবে আমি সাধারণ মোড থেকে সরাসরি নিউলাইনগুলি তৈরি করতে পারি এবং নীচে একটি নতুন লাইনে পেস্ট করার ইচ্ছার সাথে এটি একত্রিত করে করব:

<CR>jp

আপনি এন্টার থেকে কী কার্যকারিতা পছন্দ করেন তার উপর নির্ভর করে উপরের এনএম্যাপেও কে এড়িয়ে যেতে পারেন , তাই এটি ঠিক হবে<CR>p

আমিও জেজে imapped থাকেন Esc চাপুন , যা এই ক্ষেত্রে সহায়তা করবে। ভিএস- তে এটি কতটা তাৎপর্যপূর্ণ তা জন্য এসএসসি হোম সারি থেকে অনেক দূরে।

অন্যান্য সমাধানগুলির তুলনায় সংক্ষিপ্ত নয়, তবে আমি মনে করি এটির কিছুটির তুলনায় এটি কম আটকানো বোধ করে এবং এর অন্যান্য ব্যবহারও রয়েছে।


5

যদি আপনি একটি সম্পূর্ণ লাইন অনুলিপি করে থাকেন তবে একটি সম্পূর্ণ লাইনটি আটকানো হচ্ছে Y, প্রথম স্থানে লাইন ব্রেক সহ লাইন বা লাইনগুলি ইঙ্ক করতে এবং pপেস্ট করার জন্য ব্যবহার করুন। আপনি এটি ব্যবহার করতে পারেন V, যা ভিজ্যুয়াল লাইনv ভিজ্যুয়াল মোডের সমতুল্য বিপরীতে মোড ।


3
সমস্যাটি হ'ল, কখনও কখনও আপনি কেবল একটি সম্পূর্ণ লাইন অনুলিপি করতে চান না ... আমি এমন একটি সমাধান চাই যা আমি দশ লাইন বা দুটি শব্দ নকল করেছি কিনা তা কাজ করে।
স্থির_আর্টি

3

আমি ম্যাপিং আছে inoremap jj <ESC>। সুতরাং এটি সাথে নতুন লাইন সন্নিবেশ করা সহজ ojjএবং Ojjএবং তারপরp

সুতরাং ojjpনতুন একটি নতুন লাইন পেস্ট করুন। তাহলে আরও একটি স্ট্রোক আছে o<esc>pকিন্তু ojjpআমার জন্য সহজ।


2

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

set clipboard+=unnamed

আপনি কি করতে পারেন তুলনায় o<Ctl-v>

কম স্ট্রোক হওয়া ছাড়াও এটি উভয়ের ক্ষেত্রে উন্নতি হয় o<Esc>pএবং :puএটি ইনডেন্টিং সংরক্ষণ করে: অন্য দুটি বিকল্প উভয়ই আপনাকে নতুন লাইনের অক্ষর শূন্যে শুরু করে।

ক্যাভেটটি হ'ল এটি ওএস নির্ভর হতে পারে বা নাও হতে পারে। আমি কেবল জানি এটি ওএস এক্স এর সাম্প্রতিক সংস্করণে কাজ করে তবে ওএস ক্লিপবোর্ডে ইয়াঙ্ক পাওয়ার অনেকগুলি উপায়ের মধ্যে ক্লিপবোর্ড।


1

আপনি যদি সন্নিবেশ মোডেও শেষ করতে চান তবে সন্নিবেশ মোড ব্যবহার করে এটি আটকে দেওয়া সম্ভব CTRL-R "https://stackoverflow.com/a/2861909/461834

তবুও তিনটি কীস্ট্রোক, তবে কোনও রেহাই নেই, এবং আপনি যদি কোনওভাবে সন্নিবেশ করতে চান তবে আপনি একটি কীস্ট্রোক সংরক্ষণ করেন save


1

আমি আমার নেওভিম কনফিগারেশনে নিম্নলিখিত ম্যাপিংটি ব্যবহার করছি:

nnoremap <leader>p m`o<ESC>p``
nnoremap <leader>P m`O<ESC>p``

একটু ব্যাখ্যা:

  • m`: বর্তমান কার্সার অবস্থানে একটি চিহ্ন সেট করুন।
  • o<Esc>p: নীচে একটি নতুন লাইন তৈরি করুন এবং এই লাইনে পাঠ্য আটকান
  • O<Esc>P: উপরে একটি নতুন লাইন তৈরি করুন এবং এই লাইনে পাঠ্য আটকান
  • ``: কার্সারটিকে আসল অবস্থানে রাখুন

দেখুন :h markতেজ মধ্যে চিহ্ন আরো তথ্যের জন্য।


1

আপনি যদি সন্নিবেশ মোডে থাকতে চান, আপনি এটি করতে পারেন o ctrl+o p

  • o - মোড sertোকান এবং নতুন লাইনে যান
  • ctrl+o - সাধারণ মোডের মতো একটি একক কমান্ড চালান run
  • p - পেস্ট

এটি তিনটি কীস্ট্রোক তবে আপনি সন্নিবেশ মোডে থাকুন এবং এটিও o ctrl+oবেশ দ্রুত তাই আমি ব্যক্তিগতভাবে এটিকে 2.5 কীস্ট্রোক হিসাবে বিবেচনা করি।


0

এই সমাধানটি কেবল তখনই প্রয়োগ হয় যখন অনুলিপি করা পাঠ্যের ব্লকটি কোনও নতুন লাইনে শুরু হয় (কোনও রেখার মধ্যে কোনও অংশে টুকরো টুকরোটি ধরার বিপরীতে), তবে আপনি সর্বদা যে অক্ষরটি ধরতে চান তার উপর অনুলিপি শুরু করতে পারেন, তারপরে নেভিগেট করুন আপনার পছন্দসই কপি ব্লক শুরুর আগে লাইনের শেষে শেষ অক্ষরে। তারপরে আপনি এটি আটকানোতে চাইলে কার্সারটি লাইনের শেষে রাখুন যার নীচে আপনি চান যাতে আপনার পাঠ্যটি আটকে দেওয়া হয় এবং p টিপুন। যদি আমি ব্যাখ্যাটি ভুল করে না দেখি তবে এটি আপনার সন্ধানের প্রভাব সরবরাহ করবে।

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