zsh অনুলিপি এবং ইমাস মত পেস্ট করুন


10

আমি লক্ষ্য করেছি যে zsh এর অনেকগুলি জিনিস আমি ইমাসে দেখি। আমি সিটিআরএল + স্পেস এবং একটি অঞ্চল নির্বাচন করে একটি নির্বাচন করতে পারি। আমি zsh এর ভিতরে থাকাকালীন আমি ঠিক ইম্যাকের মতো অনুলিপিগুলি তৈরি করতে পারি। ইমাসে আমি আমার সিস্টেম ক্লিপবোর্ডটি ব্যবহার করতে সক্ষম (পূর্বে কিছু অতিরিক্ত কনফিগারেশন প্রয়োজন তবে এটি বাক্সটির বাইরে এখন ইমাসে কার্যকর হয়)। জেডএসে আমি আমার ক্লিপবোর্ড থেকে সাই ব্যবহার করে পেস্ট করতে পারি না এবং আমার সিস্টেম ক্লিপবোর্ডে zsh থেকে অনুলিপি করার ক্ষেত্রে একই সমস্যা রয়েছে। এই সমস্যা এড়ানোর একটি উপায় আছে কি?

উত্তর:


11

Zsh's এর একটি বিল্ট-ইন ক্লিপবোর্ড রয়েছে যা অন্যান্য অ্যাপ্লিকেশনগুলির সাথে যোগাযোগ করে না। যেহেতু এটি খুব স্ক্রিপ্টযোগ্য, আপনি এটি আপনার কয়েকটি লাইনের সাথে যোগাযোগ করতে পারেন ~/.zshrc। আপনার এক্সক্লিপ বা এক্সসেল লাগবেক্লিপবোর্ড থেকে vi- সক্ষম হওয়া zsh বা বাশ শেলটিতে ভিআই-মোডে প্রুফ-অফ-কনসেপ্টের জন্য আটকানো দেখুন । ইমাস মোডের জন্য সম্পর্কিত কোডটি এখানে রয়েছে (আপনি সম্ভবত অন্যান্য kill-*উইজেটের অনুরূপ কিছু করতে চাইবেন )।

x-copy-region-as-kill () {
  zle copy-region-as-kill
  print -rn $CUTBUFFER | xsel -i -b
}
zle -N x-copy-region-as-kill
x-kill-region () {
  zle kill-region
  print -rn $CUTBUFFER | xsel -i -b
}
zle -N x-kill-region
x-yank () {
  CUTBUFFER=$(xsel -o -b </dev/null)
  zle yank
}
zle -N x-yank
bindkey -e '\ew' x-copy-region-as-kill
bindkey -e '^W' x-kill-region
bindkey -e '^Y' x-yank

এটি এক্স 11 ক্লিপবোর্ড ব্যবহার করে (সাধারণত Ctrl+ C/ Ctrl+ দিয়ে অ্যাক্সেস করা হয় V); -bপরিবর্তে এক্স 11 প্রাথমিক নির্বাচনটি ব্যবহার করার বিকল্পটি সরান (নির্বাচনের ক্ষেত্রে স্বয়ংক্রিয় অনুলিপি এবং মাঝের মাউস বোতামটি দিয়ে পেস্ট করুন)।


আপনি চ মোড ব্যবহার করেন, তাহলে কেবল প্রতিস্থাপন kill-regionসঙ্গে vi-deleteএবং yankসঙ্গে vi-put-afterএকইভাবে মোড়ানো ইত্যাদি vi-yankঅন্যদের, এবং। (আমি এটি আরও কেন্দ্রীয়ভাবে করার কোনও উপায় খুঁজে
পাইনি

4

আমি এক্স ক্লিপবোর্ডের সাথে Zsh এর কাটা বাফার একীভূত করতে চাইছিলাম। আমি উপরোক্ত http://stchaz.free.fr/mouse.zsh চেষ্টা করেছিলাম কিন্তু আমি দেখতে পেলাম যে আমার সমস্ত Zsh ক্রিয়াকলাপটি ক্লিপবোর্ডে পপুলেশন করা আমার পছন্দ নয়। উদাহরণস্বরূপ, কখনও কখনও আমি কোনও ব্রাউজারে কিছু অনুলিপি করতাম এবং তারপরে একটি শেল গিয়ে কমান্ড লাইনটি সম্পাদনা করে তারপরে পেস্ট করতাম। তবে প্রায়শই কমান্ড লাইন সম্পাদনা করা - উদাহরণস্বরূপ একটি শব্দ মুছে ফেলা - Zsh কাট বাফারকে সংশোধন করে। আরও ভাল বা খারাপ হিসাবে এক্স এর কাছে কেবল একটি কিলিংবোর্ড রয়েছে, কিলের রিংটি নেই, সুতরাং যখন জেডএসডি সম্পাদনা অপারেশন ক্লিপবোর্ডটি ওভাররাইট করে, আমি যে জিনিসটি আটকাতে চেয়েছিলাম সেটি হারিয়ে যায় - আমি (সি মাই) ইয়াঙ্ক-পপ করতে পারি না আমি যেমন পারতাম Zsh বা Emacs এ করুন।

আমি এর পরিবর্তে যা করেছি তা হ'ল zsh এর মাধ্যমে এক্স ক্লিপবোর্ডের সাথে ইন্টারেক্ট করার জন্য নতুন বিশেষ কী-বাইন্ডিং তৈরি করা। "^ এক্সডাব্লু" এবং "^ জাই" দেখা যাচ্ছে ইমাস এবং জেডএস উভয় ক্ষেত্রেই অব্যবহৃত। এইভাবে সম্পাদনার স্বাভাবিক ক্রিয়াকলাপ, কাটবুফার এবং কিল রিংটি একা থাকে। যদি আমি অঞ্চলটি সেট করে দেওয়া ক্লিপবোর্ডে কিছু অনুলিপি করতে চাই এবং "^ এক্সডাব্লু" করি (বা যদি আমি ইতিমধ্যে এটি মেরে ফেলেছি এবং অঞ্চলটি নিষ্ক্রিয় থাকে তবে আমি কাট বাফারটি অনুলিপি করতে কেবল "^ এক্সডাব্লু" করতে পারি)। ক্লিপবোর্ড থেকে আটকানো "^ Xy" দিয়ে সম্পন্ন হয়।

# define commands to copy and paste x clipboard

# ^Xw - copy region, or cut buffer
# ^Xy - paste x clipboard

# in both cases, modifies CUTBUFFER

copy-to-xclip() {
    [[ "$REGION_ACTIVE" -ne 0 ]] && zle copy-region-as-kill
    print -rn -- $CUTBUFFER | xclip -selection clipboard -i
}

zle -N copy-to-xclip
bindkey "^Xw" copy-to-xclip

paste-xclip() {
    killring=("$CUTBUFFER" "${(@)killring[1,-2]}")
    CUTBUFFER=$(xclip -selection clipboard -o)
    zle yank
}

zle -N paste-xclip
bindkey "^Xy" paste-xclip

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