আমি যখন কোডটি ভিমে পেস্ট করব তখন কীভাবে কোডটি মূল উত্স হিসাবে তৈরি করতে পারি?


37

আমি যখন ওয়েবপৃষ্ঠাগুলি থেকে কিছু কোড অনুলিপি করে এটি ভিআইএম-এ পেস্ট করি তখন আমি দেখতে পাই এটি সিঁড়ির মতো মেস স্টাইলে পরিণত হয়েছে

xxxxxx
   xxxxxx
      xxxxxx
         xxxxxxxxxx

যেহেতু এটি এতটা নিয়মিত গোলমাল হয়েছে তাই আমি মনে করি যে আমার সাথে এখানে কিছু ভুল আছে .vimrcযা নীচের মত রয়েছে:

set number
set nocompatible
set nowritebackup
set noswapfile
syntax on
filetype indent on
filetype plugin on
filetype on
set background=light
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions=T
set fileencodings=utf-8,prc
set ruler
set incsearch
map gs :%s
set t_Co=256
:colorscheme evening
filetype plugin indent on

সাধারণত আমি ভিআইএম-এ পাইথন লিখি help


1
ধন্যবাদ। এটি আমাকে বছরের পর বছর ধরে বিরক্ত করেছে এবং আমি কখনই এ সম্পর্কে কাউকে জিজ্ঞাসা করতে পারি নি। +1 টি।
দেবসোলার

উত্তর:


50

এর আগে এটি করুন:

:set paste

তারপর পর:

:set nopaste

জন্য প্রয়োজন হয় না gvim; পেস্ট করার সময় এটি স্বয়ংক্রিয়ভাবে চালু এবং বন্ধ হয়।
বেনিয়ামিন ব্যানিয়ার

কোন ধারণা কেন এটি?
নাথান ফেলম্যান

1
কেবল অনুমান করা: সমতল ভিম কেবল কমান্ড-লাইন, এবং ক্লিপবোর্ডটি সম্পর্কে "জানেন না"। এটি "পেস্ট "টিকে একটি ইনপুট চরিত্রের ক্রম হিসাবে নেয় এবং স্বয়ং-ইনডেন্টিং প্রয়োগ করে। জিইউআই-সচেতন জিভিআইএম "জানে" পারে যে আগত ডেটাগুলি ক্লিপবোর্ড থেকে এসেছে এবং এই উদ্দেশ্যে স্বতঃসংশ্লিষ্টতা অক্ষম করে।
দেবসোলার

এটাই সঠিক. টার্মিনালটি "পেস্ট" অপারেশনটিকে কাঁচা অক্ষরের ইনপুট হিসাবে বিবেচনা করে।
ইগনাসিও ওয়াজকেজ-আব্রামস

এটি পুরোপুরি কোনও ভিম ​​ইস্যু নয় - আপনি কমান্ড প্রম্পটে পুরানো ডস এডিটরটিতে পেস্ট করার অনুরূপ প্রভাব পেতে পারেন। এই প্রোগ্রামটি উইন্ডোজ 7 64-বিটে অনুপস্থিত বলে মনে হচ্ছে - সম্ভবত এটি কারণ এটি সত্যই একটি পুরানো 16-বিট ডস অ্যাপ্লিকেশন এবং এটি আপডেট করার ঝামেলাটি মূল্যহীন ছিল না। এটি উইন্ডোজ এক্সপি-তে রয়েছে, এবং এর মধ্যে আটকানো (1) সত্যই ধীরে ধীরে কাজ করে, চরিত্র অনুসারে চরিত্রের ইনপুটটি অভিনয় করে এবং (2) সত্যই গোলমাল করে।
স্টিভ 314

16

http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste

কোড পেস্টের জন্য অটো-ইন্ডেন্টিং টগল করুন

পটভূমি

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

টগল আটকান

নিম্নলিখিতগুলি আপনার ভিআরসিআরিতে রাখুন (আপনি যে কীতে চান তা পরিবর্তন করুন):

set pastetoggle=<F2>

অন্য অ্যাপ্লিকেশন থেকে পেস্ট করতে:

  • সন্নিবেশ মোড শুরু করুন।
  • F2 টিপুন ('পেস্ট' বিকল্পটি টগল করে)।
  • ক্লিপবোর্ড থেকে পাঠ্য আটকানোর জন্য আপনার টার্মিনালটি ব্যবহার করুন।
  • F2 টিপুন ('পেস্ট' বিকল্পটি টগল করে)।

তারপরে আটকানো পাঠ্যের বিদ্যমান ইন্ডেন্টেশনটি ধরে রাখা হবে।

আপনাকে প্রথমে সন্নিবেশ মোডটি শুরু করতে হবে না, তবে আপনি যদি সাধারণ মোডে থাকেন এবং F2 এর জন্য ম্যাপিং করেন তবে সেই ম্যাপিংটি প্রযোজ্য হবে এবং 'পেস্টটগল' ফাংশনটি পরিচালনা করবে না।

কিছু লোক আপনার ভিএমআরসি-র জন্য নিম্নলিখিত বিকল্পের দ্বারা স্থিতি রেখায় দেখানো ভিজ্যুয়াল প্রতিক্রিয়া পছন্দ করে:

nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode

প্রথম লাইনটি একটি ম্যাপিং সেট করে যাতে F2 চাপলে সাধারণ মোডে 'পেস্ট' বিকল্পটি উল্টে যায় এবং তারপরে সেই বিকল্পটির মান প্রদর্শিত হবে। দ্বিতীয় লাইনটি সন্নিবেশ মোডে, টগল করে 'পেস্ট' চালু এবং বন্ধ করার সময় আপনাকে F2 টিপতে দেয়। তৃতীয় লাইন সন্নিবেশ মোডে 'পেস্ট' চালু আছে কিনা তা প্রদর্শন সক্ষম করে।


1
হটকি সমাধানের জন্য +1। ভিআইএম-তে খুব দৃ -় নয় (আমার মতো) যিনি ইতিমধ্যে অন্য কোনও কিছুর (আমার মতো) এফ-কীগুলি ম্যাপ করেছেন, <সি-এফ 2> হবে Ctrl-F2 ...
দেবসোলার

দুর্দান্ত - আমি এখন এটি ব্যবহার করছি
hoju

তাদের আসল ফাংশনগুলির সাথে <S-Issert> বা <Ctrl + V> এর মতো স্বয়ংক্রিয়ভাবে এটি করতে পেস্ট কীগুলি ম্যাপ করবেন না কেন? বা, এমন একটি ফাংশন লিখুন যা একটি সেকেন্ডের সময় কিছুটা ইনপুট অক্ষর বাফারে লেখার সময় পেস্টকে অক্ষম করে দেয়, এটির একটি ধারণা মাত্র অবশ্যই আমার জন্য আমার প্রায় সমস্ত কীগুলি অন্য জিনিসগুলিতে ম্যাপ করা হয়েছে যাতে এটি ব্যথা হয় , আমার কাছে এমনকি 12 এফ কী এবং আরও 15 টি এফ কী (জি কী) এবং এর সাথে তিনটি স্তর রয়েছে এমন একটি কীবোর্ড রয়েছে যা এখনও পর্যাপ্ত নয় :) তবে কেবল আমাকেই জানায়। কেবল সমস্যাটি হ'ল, ডান-ক্লিক মেনু, যা কোনও এসইএস সিক্সকে কোনও প্রারম্ভিক পেস্টের সিগন্যাল পাঠানোর জন্য পাঠানো হয় না ...
ওসিরিগোথ্রা ২

2

এটি স্বয়ংক্রিয়ভাবে আপনার সাথে জগাখিচুড়ি করছে।

set autoindent
set smartindent

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


-2

এটি অর্জনের জন্য সর্বনিম্ন পরিশ্রম হ'ল (এতে প্রবেশ করা যেতে পারে .vimrc):

:set paste

তারপরে আপনার কোডটি পেস্ট করুন।


3
'paste'বিকল্প স্থায়ীভাবে নির্ধারণ করা বোঝানো ছিল না। এটি ম্যাপিংস এবং সংক্ষিপ্তসারগুলি সহ প্রচুর জিনিসকে অক্ষম করে। তদ্ব্যতীত, পূর্ববর্তী উত্তর ইতিমধ্যে 'paste'বিকল্পটি কভার করে ।
হেপাটাইট

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