ক্লান্ত বাফারগুলির মধ্যে ফাইল এবং ডিরেক্টরিগুলি অনুলিপি / পেস্ট করার সহজ উপায়


10

M-w C-yদুটি ডায়ার্ড বাফারের মধ্যে পেস্ট ফাইল এবং ডিরেক্টরিগুলি অনুলিপি করার জন্য কি কোনও সহজ পদ্ধতির?

আমি কিছু আইটেম (ফাইল এবং বাফার) চিহ্নিত করে mতারপরে সেগুলি অনুলিপি করে M-w(বা অন্য শর্টকাট) দিয়ে রেখেছি, তার পরে অন্য ডায়ারড বাফারে যাচ্ছি (যা পূর্ববর্তী ডায়ার্ড বাফারগুলির উইন্ডো দ্বারা পাশাপাশি উইন্ডো-তে পাশাপাশি নয়) ) তাহলে সেখানে yankingসমস্ত অনুলিপি ফাইল C-y(বা অন্য শর্টকাট) আছে? এটি একটি সাধারণ কাজ যা বিভিন্ন ওএসে অনেক ফাইল এক্সপ্লোরার করতে পারে।

ক্লাসিকাল কপি অপশন সি এর সাথে সমস্যাযুক্ত হ'ল এটি টিপানোর সাথে সাথে এটি গন্তব্যটির জন্য জিজ্ঞাসা করে। গন্তব্য বাফারের পথটি যদি খুব দীর্ঘ হয় বা অনেক বেশি খোলা ডায়ার্ড বাফার থাকে তবে এই পদ্ধতিটি জটিল।

আমি প্রথমে আইটেমগুলি অনুলিপি করে তারপরে একটি উপযুক্ত ডায়ার্ড বাফারে পেস্ট করার সমাধান খুঁজছি।

একটি সম্পর্কিত প্রশ্ন আছে কিভাবে ইম্যাক্স ড্রাইয়ার্ডে ফাইলটি দ্রুত অনুলিপি / সরানো যায়? যা দুটি চাপযুক্ত উইন্ডোটি বিকল্পটি ব্যবহার করে উল্লম্বভাবে পৃথক হয়ে গেলে সি টিপে ধ্রুপদী পদ্ধতির ব্যবহার করে (setq dired-dwim-target t)

এটি অর্জনের উপায়গুলি কী কী?

উত্তর:


5

আমি এই বৈশিষ্ট্যটি এখন ক্লান্ত + এ যুক্ত করেছি ।

আপনি ফাইলগুলি পেস্ট করতে C-y(কমান্ড diredp-yank-files) ব্যবহার করতে পারেন , যার নিখুঁত নামগুলি আপনি কিল রিংটিতে অনুলিপি করেছেন, বর্তমান ডিরেক্টরিতে। "বর্তমান ডিরেক্টরি" এখানে dired-current-directoryফিরে আসে: কার্সারটি সন্নিবেশ করা উপ-ডিরেক্টরি বা কার্সার সাবডির তালিকায় না থাকলে ডায়ার্ড মূল ডিরেক্টরি directory

একটি উপসর্গ আর্গ দিয়ে, C-yপরিবর্তে আপনাকে পেস্টের জন্য লক্ষ্য নির্দেশকের জন্য অনুরোধ জানাবে । সুতরাং ডিরেক্টরিতে ফাইলগুলি আটকে দেওয়ার জন্য আপনার কোনও বিরক্তিকর বাফারে থাকার দরকার নেই।

তোমাকে হত্যা রিং ব্যবহার করে ফাইলের নাম কপি করা উচিত ছিল M-0 wবা M-x diredp-copy-abs-filenames-as-kill

ডিয়ারড + এ কমান্ডগুলি diredp-last-copied-filenamesফাইলের নামের একই স্ট্রিংয়ের ক্ষেত্রেও পরিবর্তনশীল সেট করে। C-yসেই পরিবর্তনশীলটির মান ব্যবহার করে, বর্তমানে কিল রিংয়ের মাথায় যা রয়েছে তা নয়। এর অর্থ আপনি ফাইলের নাম অনুলিপি করার পরে অবিলম্বে আটকানো হবে না। এবং এর অর্থ হ'ল আপনি, কিল রিংটিতে ফাইলের নাম অনুলিপি করার পরিবর্তে কেবলমাত্র সেই পরিবর্তনশীলগুলিতে নামগুলি রেখে দিতে পারেন (যেমন প্রোগ্রামমেটিকভাবে)।

আপনি যখন ব্যবহার করবেন C-y, আপনাকে নিশ্চিতকরণের জন্য অনুরোধ করা হবে ( yবা n)। lআটকানো হবে এমন ফাইলগুলির তালিকা প্রদর্শন করতে অনুরোধ জানালে আপনি ("তালিকার জন্য" ) ও হিট করতে পারেন ।


আপনি বর্তমান Dired বাফার থেকে চিহ্নিত ফাইল কপি করতে পারেন তার হিসাবে চিহ্নিত সাবডিরেক্টরি, যাও recursively সংজ্ঞায়িত এবং কোনো চিহ্নিত ফাইল । তার জন্য আপনি M-0 M-+ M-w(কমান্ড সহ শূন্য উপসর্গ আর্গ diredp-copy-filename-as-kill-recursive) ব্যবহার বা ব্যবহার করুন M-x diredp-copy-abs-filenames-as-kill-recursive


নোট করুন + ডায়ার্ড + এর সাথে আপনার কাছে সহজেই একটি ডায়ার্ড বাফার থাকতে পারে যা যে কোনও জায়গা থেকে যে কোনও ফাইল এবং ডিরেক্টরিকে তালিকাবদ্ধ করে। তা হল, তালিকাভুক্ত এন্ট্রিগুলির একই ডিরেক্টরি বা এমনকি সংশ্লিষ্ট ডিরেক্টরিতে থাকা প্রয়োজন। দেখুন C-x D F(কমান্ড diredp-dired-for-files), যা চালু আছে এর Dir মেনু-বার মেনু হিসাবে আইটেমটি Dired ফাইলগুলি যেকোন যায়গায় অবস্থিত । আপনি চিহ্নিত এবং তারপরে (অনুলিপি করতে পারেন) অনায়াসিত ফাইলগুলিকে একটি ডায়ার্ড বাফার থেকে যে কোনও ডিরেক্টরিতে আটকান।


আপডেট 2019-04-22:

আমি যে ফাইলগুলি (নিখুঁত) নামগুলি কিল রিংটিতে অনুলিপি করেছিলাম সেগুলি বর্তমান (বা অন্য) ডিরেক্টরিতে সরানোর (কেবল পেস্ট করার নয়) সক্ষমতা যুক্ত করেছি । এটি C-wডিয়ারডে আবদ্ধ ।

diredp-move-files-named-in-kill-ringএটি একটি ইন্টারেক্টিভ লিস্প ফাংশন dired+.el

(diredp-move-files-named-in-kill-ring &optional DIR NO-CONFIRM-P DETAILS)

ফাইলগুলি, যার নিখুঁত নামগুলি আপনি অনুলিপি করেছেন তা বর্তমান ডিরেক্টরিতে সরান।

অ-নেতিবাচক উপসর্গের সাহায্যে আপনাকে পরিবর্তে লক্ষ্য ডিরেক্টরিতে অনুরোধ জানানো হবে।

একটি ইতিবাচক উপসর্গের সাহায্যে আপনি পেস্টিং lনিশ্চিত করার অনুরোধ জানানো হলে আঘাত করলে ফাইলগুলি সম্পর্কে বিশদটি দেখতে পাবেন । অন্যথায় আপনি কেবল ফাইলের নাম দেখতে পান। আপনি যে বিবরণ দেখেন সেগুলি বিকল্প দ্বারা সংজ্ঞায়িত করা হয় diredp-list-file-attributes

তোমাকে হত্যা রিং ব্যবহার করে একটি স্ট্রিং হিসাবে ফাইলের নাম তালিকা অনুলিপি করা উচিত ছিল M-0 wবা M-x diredp-copy-abs-filenames-as-kill। এই কমান্ডগুলি diredp-last-copied-filenamesএকই স্ট্রিংয়ে পরিবর্তনশীল সেট করে । diredp-move-files-named-in-kill-ringসেই পরিবর্তনশীলটির মান ব্যবহার করে, বর্তমানে কিল রিংয়ের মাথায় যা রয়েছে তা নয়।

লিস্প থেকে ফোন করা হলে:

  • Alচ্ছিক আরগ NO-CONFIRM-Pমানে সরানোর জন্য নিশ্চিতকরণের জন্য জিজ্ঞাসা করবেন না।
  • Ptionচ্ছিক আরগ DETAILSপাস করা হয়েছে diredp-y-or-n-files-p

ভাল কাজ করেছেন। ডায়ার্ডকে কি C-wফাইলের অনুলিপি / ফাইলের নাম পরিবর্তনের পরিবর্তে নকল করতে হয়েছিল? ধন্যবাদ
আজমস

@ জাজমসা: না, আমি তা মনে করি না। (আমি আপনি কি বলতে চান ব্যবহারের ফাইলের নাম যে হয় অনুমান kill-ringকোথাও যেমন ঐ ফাইল স্থানান্তর করার জন্য, যেখানে তাদের সরাতে জন্য প্ররোচনা Dired বলতে।)
ড্রিউ

অবশ্যই। মানে আপনি এই কার্যকারিতাটি যুক্ত করবেন না কেন? এটা অসাধারণ হবে :). কারণ বর্তমান, কেবল সাইকে সমর্থন করে। কেবল অনুলিপি করুন, নড়াচড়া / নতুন নামকরণ করবেন না।
আজমসা

এখন। আমি ব্যবহার dired-রেঞ্জার হ্যাক জন্য এই ধন্যবাদ।
আজমস

এফওয়াইআই - আপনি এখন C-wযার ফাইলগুলি অনুলিপি করেছেন সেই ফাইলগুলি সরাতে আপনি ব্যবহার করতে পারেন ।
ড্র

4

ভ্যানিলা ডায়ার্ডে আপনি নিম্নলিখিতগুলি করতে পারেন (তৃতীয় পক্ষের কোনও গ্রন্থাগারের প্রয়োজন নেই):

  1. প্রথমে একটি ডায়ার্ড বাফারে যান যা লক্ষ্য ডিরেক্টরিটি তালিকাভুক্ত করে ।

  2. লক্ষ্য নির্দেশকের তালিকার জন্য ডিরেক্টরি শিরোলেখ লাইনে কার্সার সহ, ব্যবহার করুন w(কমান্ড dired-copy-filename-as-kill)। এটি সেই টার্গেট ডিরেক্টরিটির পরম নামটি অনুলিপি করে। (আপনি একইভাবে কোনও ডায়ার্ড-তালিকাভুক্ত সাবডির হেডার লাইন থেকে একটি দির নাম অনুলিপি করতে পারেন))

  3. আপনার অনুলিপি করতে চাইলে ফাইলগুলি তালিকাভুক্ত ডায়ার্ড বাফারে যান । এই ফাইলগুলি চিহ্নিত করুন।

  4. চিহ্নিত ফাইলগুলি অনুলিপি করতে C(কমান্ড dired-do-copy) ব্যবহার করুন । প্রম্পটে ব্যবহার করতে লক্ষ্য ডিরেক্টরি (পূর্ণ) নাম পেস্ট । মিনিবুফারে sertedোকানো ডিফল্ট ডিরেক্টরিটি মুছে ফেলার বিরক্ত না করে আপনি কেবল এটি পেস্ট করতে পারেন। (সেই ডিফল্ট দির নামটির পরে এটি আটকানো সেই ডিফল্ট নামটি ঝিমিয়ে দেয় - এটি উপেক্ষা করা হয়))C-y

এটি আমি মনে করি, আপনি যা বর্ণনা করেছেন তার মতোই সহজ ( লক্ষ্যযুক্ত ডায়ার্ড তালিকার C-wপরে চিহ্নিত ফাইলের নামগুলি অনুলিপি করতে C-y) তবে ক্রমটি বিপরীত : আপনি প্রথমে লক্ষ্য নির্দেশকের নামটি অনুলিপি করুন এবং তারপরে এটি C( dired-do-copy) কমান্ডে পেস্ট করুন ।

( dired-do-copyলক্ষ্য dir এ একই নামের বিদ্যমান ফাইলগুলির জন্য পরীক্ষা করে দেখুন)


টিপ: (আপনি যদি ডিয়ারড + ব্যবহার করেন তবে এটির প্রয়োজন নেই - আমার অন্য উত্তরটি এখানে দেখুন)) আপনি যদি একাধিক ডিরেক্টরি থেকে একই টার্গেট ডিরেক্টরিতে ফাইলগুলি অনুলিপি (বা স্থানান্তর) করতে চান এবং আপনি কিল-রিং দিয়ে অন্য কিছু করতেও পারেন এর মধ্যে, যাতে অনুলিপি করা দির নামটি আর কিল-রিংয়ের মধ্যে না থেকে যায়, তারপরে লক্ষ্য দিরের নামটি নির্বাচন করতে গৌণ নির্বাচনটি ব্যবহার করুন। গৌণ নির্বাচনটি অঞ্চল বা কার্সারের অবস্থানের উপর নির্ভর করে না - কিল-রিংয়ের পরিবর্তনগুলি নির্বিশেষে আপনি এটি যতবার চান পেস্ট করতে পারেন। আপনি মাউস ব্যবহার করে এটি আটকে দিতে পারেন, কিন্তু এটা ব্যবহার করতে handier হয় C-M-yলাইব্রেরি থেকে second-sel.el


3

আপনার ধারণাটি সোজা মনে হচ্ছে, আপনি নিজেই এটিকে প্রয়োগ করার চেষ্টা করতে পারেন, আপনি চাইলে নীচের ব্যবহারটিও শুরু করতে পারেন।

(defvar your-dired-copy-list nil)

(defun your-dired-copy ()
  (interactive)
  (setq your-dired-copy-list (dired-get-marked-files)))

(defun your-dired-paste ()
  (interactive)
  (when your-dired-copy-list
    (shell-command
     (mapconcat
      #'shell-quote-argument
      `("cp" "-r" ,@your-dired-copy-list ,default-directory)
      " "))
    (setq your-dired-copy-list nil)))

আপনাকে অনেক ধন্যবাদ. আমার একটি পরামর্শ রয়েছে: নতুন অনুলিপি করা আইটেমগুলি দেখতে পেস্ট করার পরে, ডায়ার্ড বাফারটি আপডেট করুন (রিফ্রেশ করুন)।
নাম

আরেকটি পরামর্শ: আটকানোর পরে চিহ্নিত আইটেমগুলিকে চিহ্ন চিহ্ন করা।
নাম

@ নাম ভাল পরামর্শ। আমি আপনাকে এগুলি নিজে থেকে বাস্তবায়নের পরামর্শ দিচ্ছি যেহেতু আপনিই এটি ব্যবহার করছেন। শুভকামনা।
xuchunyang

2

রেঞ্জার ফাইল ম্যানেজার আপনার বর্ণনা অনুযায়ী কাজ করে তবে এটি yyভিম দ্বারা অনুপ্রাণিত হয় (এইভাবে ভিঙ্ক কীবাইন্ডিংগুলি ইয়াঙ্ক / pপেস্ট করার জন্য অনুলিপি করা ইত্যাদি)। ইমাক্সেও রেঞ্জার প্রয়োগ রয়েছে। এটি চেষ্টা করুন, সম্ভবত এটি আপনার প্রয়োজনের সাথে খাপ খায়।

আমি নিজের জন্য ইমাস সানরাইজ-কমান্ডার ব্যবহার করি যা মিডনাইট কমান্ডারের (এমসি) অনুরূপ, যখনই আমার মনে হয় আমার ডাবল-পেনস-ফাইল-পরিচালনা প্রয়োজন।

আপডেট: ডায়ার্ড-রেঞ্জারে আপনার বর্ণিত অনুলিপি / পেস্ট রয়েছে। কমপক্ষে ডক্সে।

;; Multi-stage copy/pasting of files
;; ---------------------------------

;; A feature present in most orthodox file managers is a "two-stage"
;; copy/paste process.  Roughly, the user first selects some files,
;; "copies" them into a clipboard and then pastes them to the target
;; location.  This workflow is missing in dired.

;; In dired, user first marks the files, then issues the
;; `dired-do-copy' command which prompts for the destination.  The
;; files are then copied there.  The `dired-dwim-target' option makes
;; this a bit friendlier---if two dired windows are opened, the other
;; one is automatically the default target.

;; With the multi-stage operations, you can gather files from
;; *multiple* dired buffers into a single "clipboard", then copy or
;; move all of them to the target location.  Another huge advantage is
;; that if the target dired buffer is already opened, switching to it
;; via ido or ibuffer is often faster than selecting the path.

;; Call `dired-ranger-copy' to add marked files (or the file under
;; point if no files are marked) to the "clipboard".  With non-nil
;; prefix argument, add the marked files to the current clipboard.

;; Past clipboards are stored in `dired-ranger-copy-ring' so you can
;; repeat the past pastes.
;; ...

মেলপাতে আছে dired-rangerএবং rangerউপলব্ধ। মানে কোনটা?
নাম

ভাল, আমি ডায়ার্ড-রেঞ্জার সম্পর্কে জানতাম না তবে বর্ণনা থেকে মনে হচ্ছে এটি আপনি চাইছেন th
ম্যাক্সিম কিম

1

আমিও ব্যবহার করার পরামর্শ দেব dired-ranger। এটি আমার মধ্যে যা আছে init.el:

(use-package dired-ranger
  :ensure t
  :config
  (setq dired-ranger-copy-ring-size 1)
    (define-key dired-mode-map (kbd "C-w")
        (lambda ()
            (interactive)
            (dired-ranger-copy nil) ; t adds item to dired-ranger-copy-ring
            (define-key dired-mode-map (kbd "C-y") 'dired-ranger-move)))
    (define-key dired-mode-map (kbd "M-w")
        (lambda ()
            (interactive)
            (dired-ranger-copy nil)
            (define-key dired-mode-map (kbd "C-y") 'dired-ranger-paste)))
)

0

বিরক্তিকর রেঞ্জারটি আমার জন্য আসল সমাধান ছিল:

আপনি বর্ণনা করার সাথে সাথে সাধারণ ফাইল এক্সপ্লোরার আচরণ অর্জন করতে পারেন, কেবল এই সাধারণ কনফিগারেশনের মাধ্যমে (ধরে নিচ্ছেন যে আপনি ব্যবহার করছেন use-package):

(use-package dired-ranger
  :bind (:map dired-mode-map
              ("W" . dired-ranger-copy)
              ("X" . dired-ranger-move)
              ("Y" . dired-ranger-paste)))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.