সর্বদা ব্যবহার করুন: সেট পেস্ট করুন, এটি কি ভাল ধারণা?


18

একটি টার্মিনাল ভিমে, ক্লিপবোর্ডের ডেটা আটকানো প্রায়শই কোড ইনডেন্টটি মিস করে। আমি কেবল জানতাম যদি আমি :set pasteইনডেন্টটি ব্যবহার না করি তবে এটি ভাঙা হয়নি। যদিও, তথ্য আটকানোর পরে, আমি :set nopasteআবার করা উচিত ? আমি যদি না করি তবে কী সমস্যা আসে?


নিজের জন্য চেষ্টা সম্পর্কে কি? নাকি ডকুমেন্টেশন পড়া ?
রোমেনেল

1
দেখুন আমার উত্তর থেকে "আটকানো হচ্ছে কোড টার্মিনাল উইন্ডোতে তেজ মধ্যে" "পেস্ট মোড বন্ধনী করা" stackoverflow.com/a/7053522/754997 । যদি আপনার টার্মিনাল এমুলেটর এটি সমর্থন করে তবে আপনি যখন টার্মিনালে টেক্সট আটকে দেবেন তখন আপনি ভিমকে স্বয়ংক্রিয়ভাবে পেস্ট মোডে / থেকে স্যুইচ করতে বলার ব্যবস্থা করতে পারেন।
ক্রিস পেজ

1
@romainl আমি এটি বেশ প্রশংসনীয় মনে করি যে 1) সর্বদা সেট পেস্ট ব্যবহারের নেতিবাচক পরিণতি আছে কিনা তা দেখার জন্য অপেক্ষা করা (+ - নোপস্টে), এবং 2) আরটিএফএম-ইনিং (ওপির মতো নিম্ন বা মধ্যবর্তী স্তরের ব্যবহারকারী হিসাবে) , বিকল্পগুলির সাথে অভিজ্ঞতা আছে তাদের জিজ্ঞাসা করার চেয়ে কম দরকারী। এখানে জিজ্ঞাসা করা একটি স্মার্ট পদ্ধতির বলে মনে হচ্ছে এবং এটি নথিভুক্ত করা অন্যকে সহায়তা করবে।
belacqua

উত্তর:


5

অন্যরা যেমন লিখেছেন, আপনি 'পেস্ট' সেটটি ছেড়ে যেতে চান না। আমি কেবল এটি উল্লেখ করতে চেয়েছিলাম যে একটি ভাল টার্মিনাল এমুলেটর এবং সঠিকভাবে সংকলিত এবং কনফিগার করা হয়েছে vim, আপনার 'পেস্ট' পরিবর্তন করার দরকার নেই। আপনার একটি ভাল টার্মিনাল এমুলেটর যেমন এক্সটারেম বা জিনোম টার্মিনাল, এক্স 11 বৈশিষ্ট্য সহ ভিআইএম এবং 'মা' বিকল্পটি 'এ' তে সেট করা দরকার। তারপরে vim"জানুন" যখন আপনি মাউসটি পেস্ট করবেন এবং কার্যকরভাবে আপনার জন্য 'পেস্ট' বিকল্পটি সেট এবং আনসেট করবে।

vimএক্স 11 বৈশিষ্ট্যটি সহ একটি উপায় হ'ল বিকল্পটি gvimদিয়ে চালানো -vবা একটি উপকরণ তৈরি করা,

alias vim='gvim -v'

তারপর রাখুন

set mouse=a

আপনার ~ / .vimrc এ।


আমি যখন মাউস = এ সেট করি তখন আমি পাঠ্যটি অনুলিপি করতে পারি না। "অনুলিপি" রাইট-ক্লিক মেনুতে এবং অ্যাপ্লিকেশন মেনুতে ধুসর।
লি ড্যানিয়েল ক্রকার

@ LiDanielCrocker: Copyধূসর হয়ে যাবে বা কিছু পাঠ্য নির্বাচিত না হলে এগুলি দৃশ্যমান হবে না। আপনি অনুলিপি করার জন্য পাঠ্যটি কীভাবে নির্বাচন করছেন?
গ্যারিজহন

শুধু মাউস দিয়ে। FYI, "y" ঠিকঠাক কাজ করে ... পাঠ্যটি yanks করে এটি সিস্টেম কীবোর্ডে অনুলিপি করে। এটি কেবল মেনু যা কাজ করে না। যদি মাউস "আর" সেট করা থাকে তবে মেনুগুলি কাজ করে তবে মাউসটিতে লাইন নম্বর অন্তর্ভুক্ত থাকে। সুতরাং সব মিলিয়ে, আমি মাউস = এ দিয়ে বাঁচতে পারি, আমাকে কেবল অনুলিপি পরিবর্তে ইয়েঙ্ক করতে হবে।
লি ড্যানিয়েল ক্রকার 17

7

এই পোস্টে আমার প্রিয় উত্তর আছে, https://coderwall.com/p/if9mda/autoचालित-set-paste-mode-in-vim-when-pasting-in-insert-mode

মূলত আপনি যদি সন্নিবেশ মোডে শুরু করেন এবং সিআরটিএল + শিফট + ভি বা আপনার মাউসের সাহায্যে ডান ক্লিকের পেস্ট ব্যবহার করেন, ভিম সনাক্ত করে যে এটি একটি টার্মিনাল থেকে এসেছে এবং স্বয়ংক্রিয়ভাবে পেস্ট মোড সেট করে, এটি একবার হয়ে গেলে আনসেট করে দেয়, যাতে আপনি পুনরায় কাটা কীগুলি হারাবেন না (যা পেস্ট মোডে কাজ করতে পারে না কারণ এটির কাঁচা ডেটা লেখা হয়) এবং এটি হয়ে গেলে আপনি "বুদ্ধিমান" অবস্থায় ফিরে যান।

শুধু ভিম এর জন্য (আপনার .vimrc এ দিন)

let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

আপনি যদি টিএমাক্সের আওতায় ভিএম ব্যবহার করেন (এখনও .vimrc এ যায়)

function! WrapForTmux(s)
  if !exists('$TMUX')
    return a:s
  endif

  let tmux_start = "\<Esc>Ptmux;"
  let tmux_end = "\<Esc>\\"

  return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') . tmux_end
endfunction

let &t_SI .= WrapForTmux("\<Esc>[?2004h")
let &t_EI .= WrapForTmux("\<Esc>[?2004l")

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

আমি ধরে নিই যে কোনও একটি let &t_SI .= "\<Esc>[?xxxxx"লাইন কী-বোর্ডের পেস্ট শর্টকাট সনাক্ত করছে? এই ম্যাক জন্য কাজ করে পাশাপাশি বিভিন্ন শর্টকাট দেওয়া?
two1ejack

@ Dou1ejack এগুলি আসলে Xterm এ্যাসপ সিকোয়েন্সগুলি সনাক্ত করছে, কীভাবে তাদের ডাকা হত না (যেমন ২০০৪ হ'ল এটি একটি পেস্ট শুরু) যতক্ষণ না আপনার টার্মিনালটি Xterm কীকোডগুলি সমর্থন করে এবং সেগুলি ভিমে পৌঁছে দেয় ততক্ষণ ম্যাকের জন্য এটি সূক্ষ্মভাবে কাজ করা উচিত।
ড্রাগন 788

ঈশ্বর. আপনি আমার নায়ক. আমি এত টাইপ করেছি: অনেক সময় নোপস্ট সেট করে রেখেছি।
ম্যাক্সওয়েল

3

রোমেনেলের পরামর্শ অনুসারে, ডকুমেন্টেশনটি ব্যাখ্যা করে যে 'paste'বিকল্পটি সেট করা অন্যান্য বেশ কয়েকটি বিকল্পকে অক্ষম করে এবং আপনি অবশ্যই এটি খুঁজে পেতে পারেন যে খুব শীঘ্রই এটি আপনার জন্য সমস্যা তৈরি করে। এই কারণে, 'pastetoggle'বিকল্প আছে। দেখা:

:help 'paste'
:help 'pastetoggle'

1

যদি কিছু বিদ্যমান থাকে তবে এর অবশ্যই এর অর্থ থাকতে হবে। আপনার ভিএম ডকুমেন্টেশনগুলিতে ভাল নজর দেওয়া উচিত যা খুব দরকারী।

  :help 'paste'
  :help 'pastetoggle'

আপনি একবার পড়লে, আপনি এটি চাইতে পারেন:

" Toggle paste mode
"   (prefer this over 'pastetoggle' to echo current state)
nmap <leader>p :setlocal paste! paste?<cr>

আমি আশা করি আপনি এই পোস্টটি দরকারী বলে মনে করি :)


1

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

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

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