সাধারণ মোড না রেখে কীভাবে একটি নতুন লাইন .োকানো যায়


24

আমি ভাবছি যদি আমি স্বাভাবিক মোড না রেখে কোনও নতুন লাইন canোকাতে পারি। উদাহরণস্বরূপ, আমার দুটি লাইন রয়েছে:

this is line one
this is line two

এবং কার্সার এক লাইনে আছে। এখন আমি এই লাইনের এক এবং লাইন দুইয়ের মধ্যে একটি নতুন লাইন চাই:

this is line one

this is line two

আমি জানি যে আমি যখন সাধারণ মোডে থাকি তখন কেবল চাপতে পারি o। তবে এটি সন্নিবেশ মোডে প্রবেশ করবে।

আমি কীভাবে একটি নতুন লাইন sertোকাতে এবং স্বাভাবিক মোডে থাকতে পারি?


উত্তর:


10

আমি তার জন্য একটি ম্যাপিং ব্যবহার করি:

" Quickly insert an empty new line without entering insert mode
    nnoremap <Leader>o o<Esc>
    nnoremap <Leader>O O<Esc>

এইভাবে আপনি আপনার কার্সারের নীচে একটি লাইন <Leader>oএবং এর সাথে পূর্ববর্তী লাইনে একটি সন্নিবেশ করতে পারেন <Leader>O

দ্রষ্টব্য: যে কেউ তর্ক করতে পারে যে এটির জন্য o<Esc>যতগুলি কী-স্ট্রোক প্রয়োজন ততটাই আশা করি আপনি এই জাতীয় ম্যাপিং সহজ করতে আপনার নেতা বেছে নিয়েছেন। এছাড়াও আমি সত্যই নিশ্চিত নই যে এটি করার একটি অন্তর্নির্মিত উপায় আছে।


8

একটি সমাধান যা সন্নিবেশ মোডের মধ্য দিয়ে যায় না, কার্সারটি সরায় না এবং একবারে কয়েকটি লাইন সংযোজন ( 3\oইত্যাদি) করার জন্য আপনাকে একটি কাউন্টার ব্যবহার করতে দেয় :

nnoremap <silent> <leader>o :<C-u>call append(line("."),   repeat([""], v:count1))<CR>
nnoremap <silent> <leader>O :<C-u>call append(line(".")-1, repeat([""], v:count1))<CR>

6

যদি আপনি ম্যাপিংগুলি যুক্ত করতে না চান তবে আপনি yyএকটি খালি লাইন ইঙ্ক করতে পারেন এবং তারপরে pকার্সারের নীচে এবং কার্সারের Pউপরে পেস্ট করতে পারেন ।


ম্যাপিং ছাড়াই এটি সম্ভবত সেরা উত্তর।
উইলেম ভ্যান কেটভিচ

অথবা এটি oরেজিস্ট্রারে সংরক্ষণ করুন "oyyএবং যখনই প্রয়োজন হবে সেখান থেকে এটি আটকান "op
মাইক 23

5

আমি ব্যক্তিগতভাবে টিম পোপের অনিম্পায়ার্ড প্লাগইন ব্যবহার করার পরামর্শ দিই । এটি অনেকগুলি ম্যাপিং সরবরাহ করে তবে আপনি যেগুলি সন্ধান করবেন এটি হ'ল [<space>এবং ]<space>যা যথাক্রমে বর্তমান লাইনের উপরে এবং নীচে ফাঁকা রেখা তৈরি করে। অ্যামপায়ার্ড কুইকফিক্স তালিকা, বাফার তালিকা, বিকল্প টগলিং এবং আরও অনেকের জন্য দুর্দান্ত ম্যাপিং সরবরাহ করে। আরও :h unimpairedজন্য দেখুন।

আপনি যদি অযৌক্তিক প্লাগইন ব্যবহার করতে না চান তবে নীচের ম্যাপিংয়ের মতো আপনার ~/.vimrcফাইলটিতে কিছু দ্রুত ম্যাপিং রয়েছে :

nnoremap <silent> [<space>  :<c-u>put!=repeat([''],v:count)<bar>']+1<cr>
nnoremap <silent> ]<space>  :<c-u>put =repeat([''],v:count)<bar>'[-1<cr>

4

আমার ম্যাপিং ব্যবহার করে Shift-Enter। এটি অন্যদের থেকে পৃথক যে কার্সারটি একই লাইন এবং কলামে চিহ্ন ও ব্যবহার করে ফিরে আসে ।

" Insert new line above without going into insert mode
" (uses mark o to return to the previous cursor column)
nnoremap <S-Enter> moO<Esc>`o

5
নোট করুন যে ম্যাপিং <S-Enter>টার্মিনাল এমুলেটরগুলিতে কাজ করে না (এটি কেবল জিভিমে কাজ করে)। সুতরাং আপনাকে এটিকে ম্যাপ করার জন্য একটি পৃথক কী সংমিশ্রণ চয়ন করতে হবে ;-)
মার্টিন টর্নয়েজ

2

ম্যাক্সিম কিমের এই উত্তরটি ছিল জীবন-পরিবর্তনকারী:

noremap <silent> <space> :exe "normal i".nr2char(getchar())<CR>

এবং এটি আমার রিফ:

noremap <silent> <s-space> :exe "normal a".nr2char(getchar())<CR>

এই লাইন আপনার মধ্যে রাখুন vimrc। তারপর আপনার ফাইল এবং হিট দ্বিতীয় লাইন শুরুতে যান Space, Enterঅথবা প্রথম লাইন এবং হিট শেষে ফিরে যেতে Shift+Space, Enter। হয় প্রথম এবং দ্বিতীয় লাইনের মধ্যে খালি লাইন যুক্ত করবে এবং আপনাকে স্বাভাবিক মোডে ছেড়ে দেবে।

এগুলি আপনি অন্য যে কোনও একক কী -র জন্যও ব্যবহার করতে পারেন - হিট করুন Spaceবা Shift+Spaceতারপরে আপনি যে কীটি চান তা অনুসরণ করে এবং এটি যথাক্রমে এটি sertোকাতে বা সংযোজন করতে পারে।


2

এই ম্যাপিংগুলি আপনি যা সন্ধান করছেন ঠিক তা করবে।

nnoremap <c-n> @="m`o\eg``"<cr>
nnoremap <c-p> @="m`O\eg``"<cr>   

এগুলি কার্সারের আগে বা পরে নতুন সংখ্যাগুলি সন্নিবেশ করায়; জাম্পের তালিকা পরিবর্তন না করে কার্সারটি যেখানেই ঠিক সেখানে রাখা।

আর একটি সমাধান হ'ল একটি শর্টকাট তৈরি করা যা একটি অফলাইন সাথে নামহীন নিবন্ধটি পূরণ করে। তারপরে আপনি নতুন লাইনগুলি সন্নিবেশ করানোর জন্য কেবল কমান্ডগুলি, p বা P ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

nnoremap "<cr> :let @@="\n"<cr>

1

এই জন্য আমার ম্যাপিং

 " Create Blank Newlines and stay in Normal mode
nnoremap <silent> zj o<Esc>k
nnoremap <silent> zk O<Esc>j

স্ট্যাটক্সের থেকে আলাদা কারণ এটি কার্সারটিকে একই স্থানে রাখে।


কি <silent>মানে?
অ্যালেক্স

এটি স্ট্যাটাস লাইনে কোনও কিছু প্রতিধ্বনি রোধ করে। আমি নিশ্চিত যে এই নির্দিষ্ট ক্ষেত্রে এটি কিছু করে না, আমি যেখানেই মূলত এটি অনুলিপি করেছিলাম সেখানেই ছিল। দেখুন :h map-silent
কেভিন

-1

আমার ব্যক্তিগত সমাধানটি এক্সপ্রেশন রেজিস্টারে একটি নতুনলাইন চরিত্রটিকে আটকে দেয় এবং বর্তমান লাইনের পরে এটি আটকে দেয়, তারপরে মূল অবস্থানে ফিরে আসে:

nnoremap K m`"="\n"<CR>p``
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.