Org- মোডের লিঙ্কগুলি কীভাবে অনুলিপি করবেন?


16

Org- মোড-লিঙ্কগুলি সন্নিবেশ করানো বা সংরক্ষণ করার বিষয়ে প্রচুর ডকুমেন্টেশন রয়েছে তবে এগুলি অন্য ফর্ম্যাটে বাফারগুলিতে অনুলিপি করার বিষয়ে স্পষ্টত কোনও কিছুই নেই।

একটি org-মোড-লিঙ্কের ইউআরএল আপনি কীভাবে একটি কম ফাইলের ক্লিপবোর্ডে / কিল রিংয়ে সম্ভব হিসাবে কয়েকটি কাস্ট্রোক সহ অনুলিপি করবেন? আমি চেষ্টা org-store-linkএবং org-insert-link, কিন্তু এটা যাই হোক না কেন অন্য বাফারের মধ্যে আপনার খোলা পুরো সংস্থা-মোড সিনট্যাক্স ডাম্প।

উদাহরণ: বাফার 1 অর্গ-মোড, বাফার 2 মার্কডাউন।

  1. বাফার 1 দেখুন, C-sলিঙ্ক অনুসন্ধান করুন।
  2. ম্যাজিক ঘটে , URL টি ক্লিপবোর্ডে রয়েছে
  3. C-yইউআরএলকে বাফারে পরিণত করতে বাফার ২ দেখুন ।

উত্তর:


10

এখানে আপনি কী চান তা অর্জনের একটি উপায়, পাঠ্য বৈশিষ্ট্যগুলি ব্যবহার করে।

আপনি যে কমান্ডটি অনুলিপি করতে এবং চালাতে চান সেই org ফাইলের লিঙ্কটিতে যেতে my-org-retrieve-url-from-pointপারেন এটি ক্লিপবোর্ডে org লিঙ্কটি বর্তমান পয়েন্টে অনুলিপি করবে। ক্লিপবোর্ডে লিঙ্কটি যুক্ত করার আগে একটি ইয়াঙ্ক-হ্যান্ডলার ( my-yank-org-link) নিবন্ধিত হয়েছে যা লিঙ্কটি আটকানোর সময় বলা হয়। ইয়াঙ্ক-হ্যান্ডলার চেক করে যে বর্তমান বাফারটি org-মোডে আছে বা org-মোড থেকে প্রাপ্ত একটি মোডে আছে, যদি এটি লিঙ্কটিকে এটি (একটি org-লিঙ্ক) হিসাবে সন্নিবেশ করায়, অন্যথায় এটি লিঙ্কটি থেকে URL টি বের করে এবং এটি সন্নিবেশ করে

(defun my-yank-org-link (text)
  (if (derived-mode-p 'org-mode)
      (insert text)
    (string-match org-bracket-link-regexp text)
    (insert (substring text (match-beginning 1) (match-end 1)))))

(defun my-org-retrieve-url-from-point ()
  (interactive)
  (let* ((link-info (assoc :link (org-context)))
         (text (when link-info
                 ;; org-context seems to return nil if the current element
                 ;; starts at buffer-start or ends at buffer-end
                 (buffer-substring-no-properties (or (cadr link-info) (point-min))
                                                 (or (caddr link-info) (point-max))))))
    (if (not text)
        (error "Not in org link")
      (add-text-properties 0 (length text) '(yank-handler (my-yank-org-link)) text)
      (kill-new text))))

এখানে একটি ডিডব্লিউআইএম ​​সংস্করণ রয়েছে kill-ring-save, যা kill-ring-saveঅঞ্চলটি সক্রিয় থাকলে বা বিন্দুতে অর্গ-লিঙ্কটি অনুলিপি করে তা ব্যবহার করে

(defun my-smarter-kill-ring-save ()
  (interactive)
  (if (region-active-p)
      (call-interactively #'kill-ring-save)
    (when (eq major-mode 'org-mode)
      (call-interactively #'my-org-retrieve-url-from-point))))

দ্রষ্টব্য : এটি বর্তমানে কোনও ইউআরএল লিঙ্ক এবং অভ্যন্তরীণ লিঙ্কগুলির মধ্যে পার্থক্য করে না।


1
আমি অপসারণ করেছি if, কারণ জিইউআই ইম্যাক্স ব্যবহার করার সময় এটি সর্বদা সম্পূর্ণ লিঙ্কটি ( [[a]][b]]) URL অংশ ( a) এর পরিবর্তে অনুলিপি করে থাকে
নিতজ

3

আরেকটি সম্ভাবনা: লিঙ্কটিতে কার্সার দিয়ে, সম্পাদন করুন org-insert-link। এটি সাধারণত হয় C-c C-l। অশুভ মোডের সাথে (বা সম্ভবত কেবল স্পেসম্যাক্স সহ) , i lকাজ করে। এটি প্রাক-জনসংখ্যার লিঙ্কটির মান সহ লিঙ্ক সন্নিবেশ প্রবাহে প্রবেশ করে। আপনি M-x evil-yank-lineযখন মিনিবাসার সাথে লিঙ্ক ঠিকানার বিষয়বস্তু রয়েছে তখন আপনি তা করতে পারেন ।


এই পদ্ধতিটি আমি যা ব্যবহার করি তা হল, বিশেষত আমি যাই C-c C-l M-S-<backspace> C-g
ওমর

এটি কাজ করে কিন্তু এতটা দক্ষ নয়।
itirazimvar

2

পার্টিতে দেরিতে (এবং এখানে আমার প্রথম পোস্টটি, যাইহোক) তবে আমি মনে করি এটি অন্যের পক্ষেও কার্যকর হতে পারে। আবার ইমাসের অভ্যন্তরে ইয়াঙ্ক করার সময় গৃহীত উত্তরটি পুরোপুরি কাজ করে, তবে সিস্টেম ক্লিপবোর্ডে অনুলিপি করা প্রকৃত পাঠ্যটি এখনও পুরো অর্গ-মোড সিনট্যাক্স। আমি এমন কিছু চেয়েছিলাম যা org- মোড এবং ইমাস উভয়ের বাইরে একটি লিঙ্ক অনুলিপি করতে পারে । কেসগুলি ব্যবহার করুন: আমি ইদানীং প্রচুর ওয়েব ডেভ করে চলেছি এবং আমি প্রায়শই একাধিক ব্রাউজার ব্যবহার করি। এর মধ্যে কেবল একটিই C-c c-oশর্টকাটের জন্য ডিফল্ট হতে পারে এবং কখনও কখনও আমি একটি পূর্বনির্ধারিত কোনও লিঙ্ক খুলতে চাই। এছাড়াও, সহকর্মীদের সাথে স্ল্যাক, এট সিটেরা লিঙ্কগুলি আটকানো।

দীর্ঘ গল্প সংক্ষেপে, আমি গৃহীত উত্তরটি মেশানো এবং মিলিয়ে এই সমাধানটি নিয়ে এসেছি :

(defun my-org-export-url ()
  (interactive)
  (let* ((link-info (assoc :link (org-context)))
         (text (when link-info
                 (buffer-substring-no-properties (or (cadr link-info) (point-min))
                                                 (or (caddr link-info) (point-max))))))
    (if (not text)
        (error "Not in org link")
      (string-match org-bracket-link-regexp text)
      (kill-new (substring text (match-beginning 1) (match-end 1))))))

এটি ক্লিপবোর্ডে লিঙ্কটি কোনও org- মোড লিঙ্কের অংশ হিসাবে অনুলিপি করবে।

প্রকৃতপক্ষে, আমি পূর্ববর্তী উত্তরের সমাধান এবং এই নতুন ফাংশনটি আমার .emacsনিজের, প্রতিটি নিজের কী-বাইন্ডিংয়ের সাথে সংহত করেছি । এখানে সম্পূর্ণ কোড:

(defun my-yank-org-link (text)
  (if (derived-mode-p 'org-mode)
      (insert text)
    (string-match org-bracket-link-regexp text)
    (insert (substring text (match-beginning 1) (match-end 1)))))

(defun my-org-copy-smart-url ()
  (interactive)
  (let* ((link-info (assoc :link (org-context)))
         (text (when link-info
                 (buffer-substring-no-properties (or (cadr link-info) (point-min))
                                                 (or (caddr link-info) (point-max))))))
    (if (not text)
        (error "Not in org link")
      (add-text-properties 0 (length text) '(yank-handler (my-yank-org-link)) text)
      (kill-new text))))
(global-set-key (kbd "C-c c") 'my-org-copy-smart-url)

(defun my-org-export-url ()
  (interactive)
  (let* ((link-info (assoc :link (org-context)))
         (text (when link-info
                 (buffer-substring-no-properties (or (cadr link-info) (point-min))
                                                 (or (caddr link-info) (point-max))))))
    (if (not text)
        (error "Not in org link")
      (string-match org-bracket-link-regexp text)
      (kill-new (substring text (match-beginning 1) (match-end 1))))))
(global-set-key (kbd "C-c e") 'my-org-export-url)

আমি চয়ন করেছেন C-c eএবং C-c cকী-বাইন্ডিং কারণ তারা ভালো স্মৃতিবর্ধনবিদ্যা হয় export এবং cপি করুন এবং তারা সংস্থা-মোডে অব্যবহৃত হয়। তারা একরকম ইতিমধ্যে বিদ্যমান keybinding সঙ্গে মাপসই C-c C-oজন্যoপেনিং লিঙ্কগুলির ।

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