Org মোডে সোর্স ব্লকগুলি দ্রুত sertোকান


61

org-mode নিম্নলিখিত সিনট্যাক্সের ব্লক সহ সোর্স কোড রেন্ডার করার ক্ষমতা রয়েছে:

#+NAME: <name>
#+BEGIN_SRC <language> <switches> <header arguments>
    <body>
#+END_SRC

এই ব্লকগুলিকে দ্রুত inোকানোর জন্য কি বিদ্যমান কোন কমান্ড রয়েছে org-mode, বা আমার মতো বাহ্যিক সরঞ্জাম ব্যবহার করা দরকার yasnippet?


7
কয়েকটি উপায় রয়েছে: (১) বিল্ট-ইন ইজি টেম্পলেট (২) hydraপ্যাকেজ ব্যবহার : ব্লগপোস্ট (৩) সহজ সংগঠন সোর্স ব্লক সন্নিবেশের জন্য আরেকটি স্নিপেট
দক্ষ মোদী

: আপনি এ গিয়ে Emacs থেকে আটকানো হচ্ছে থাকেন, তবে এ গিয়ে Emacs তোমার জন্য প্রধান-মোড এবং ব্যাকলিঙ্ক পূরণ করতে পারেন github.com/unhammer/org-rich-yank#org-rich-paste
unhammer

উত্তর:


89

@কাউশালমোদি মন্তব্যগুলিতে যেমন উল্লেখ করেছেন আপনি (org) Easy Templatesবিভিন্ন ধরণের ব্লকের সন্নিবেশ দ্রুত করতে ব্যবহার করতে পারেন ।

সাধারণ পদ্ধতিটি হ'ল অন্যথায় খালি লাইনে টেমপ্লেট নির্বাচনকারী (সাধারণত একটি একক বর্ণ) সন্নিবেশ করানো <হয় ।TAB

জেনেরিক সোর্স ব্লক টেম্পলেটটির জন্য টেম্পলেট নির্বাচনকারী s, সুতরাং <sএরপরে টাইপ করা TABআপনাকে এটি দেবে:

#+BEGIN_SRC 

#+END_SRC

পয়েন্টটি প্রথম লাইনের শেষে অবস্থিত থাকবে।

এটি আপনি যা অর্জন করতে চান তার একটি প্রথম প্রথম অনুমান, তবে এটি ইমাসস, সুতরাং এটি আরও ভাল করা যাক!

কলযুক্ত একটিতে এক বা একাধিক এন্ট্রি যুক্ত করে আপনি কাস্টম টেম্পলেটগুলি সংজ্ঞায়িত করতে পারেন org-structure-template-alist। উদাহরণ স্বরূপ:

(add-to-list 'org-structure-template-alist '("n" "#+NAME: ?"))

এই কোড একটি যোগ #+NAME:করার জন্য টেমপ্লেট org-structure-template-alistব্যবহার করে, nএকটি টেম্পলেট নির্বাচক হিসেবে। এই টেমপ্লেট পয়েন্টটি প্রসারণের পরে অবস্থিত হবে ?

আপনি যদি সর্বদা আপনার কোড ব্লকের নাম রাখেন তবে আপনি উত্স ব্লক টেমপ্লেটের মূল সংস্করণটিকে একটি বর্ধিত সংস্করণ দিয়ে ওভাররাইট করতে পারেন যাতে #+NAME:লাইনটি রয়েছে :

(add-to-list 'org-structure-template-alist
             '("s" "#+NAME: ?\n#+BEGIN_SRC \n\n#+END_SRC"))

<sএরপরে টাইপ করা TABতারপরে আপনাকে দেবে:

#+NAME: 
#+BEGIN_SRC 

#+END_SRC

এটি হিমশৈলের একমাত্র ডগা; ভাষা-নির্দিষ্ট কোড ব্লক, নির্দিষ্ট শিরোনাম যুক্তিযুক্ত কোড ব্লক ইত্যাদির জন্য অতিরিক্ত টেম্পলেটগুলির সংজ্ঞা দিতে আপনি অনুরূপ পদ্ধতির ব্যবহার করতে পারেন


1
দ্রষ্টব্য: সহজ টেম্পলেটটি org- মোড হেডে বেমানান উপায়ে প্রতিস্থাপন করা হয়েছে। আমি ইয়াসনিপেট ব্যবহার করার পরামর্শ দিচ্ছি।
লর্ডান

@ লুরদান এখনও কি এমন অবস্থা? আমি <s TABম্যাক ওএস এক্সে এম্যাকস 25 এ চেষ্টা করেছি এবং দেখে মনে হচ্ছে এটি কার্যকর হবে।
রুডল্ফ ওলাহ

1
@ রুডলফোলাহ হ্যাঁ, কমপক্ষে org- মোডের জন্য (গিট) হেড। এমনকি emacs26 সহ, বান্ডিলযুক্ত org- মোডে এখনও org-try-structure-completionফাংশন রয়েছে (সহজ-টেম্পলেটগুলির জন্য)। তবে যাইহোক, এটি ভবিষ্যতে স্ট্রাকচার-টেম্পলেট দ্বারা প্রতিস্থাপন করা হবে। cf. কোড.
orgmode.org/bzg/org-mode/commit/…

14

কেন নিজে লিখবেন না?

(defun org-insert-source-block (name language switches header)
  "Asks name, language, switches, header.
Inserts org-mode source code snippet"
  (interactive "sname? 
slanguage? 
sswitches? 
sheader? ")
  (insert 
   (if (string= name "")
       ""
     (concat "#+NAME: " name) )
   (format "
#+BEGIN_SRC %s %s %s

#+END_SRC" language switches header
)
   )
  (forward-line -1)
  (goto-char (line-end-position))
  )

6

আমার বাক্সে আমি 99% সময় উত্স ব্লক তৈরি করছি এবং 1% সময় আমি সমস্ত কিছু করছি। 1% ইজি টেম্পলেটগুলির জন্য উপযুক্ত এবং 99% এর জন্য আমি একটি ইয়াस्নিপেট পেয়েছি।

  • এটি NAMEব্যবহার করে একটি অনন্যতা তৈরি করে org-idতবে এটি কেবল আমাদের কিছুতেই আসে না) এবং তারপরে এটি আমাকে জিজ্ঞাসা করে যে আমি কী ভাষাটি ব্যবহার করতে চাই সেগুলিকে সীমাবদ্ধ করে যা আমি অর্গ-মোড লিটারেট প্রোগ্রামিংকে বলেছিলাম (বাবেল)
  • আপনি যে জাতীয় ধরণের ভাষা ব্যবহার করতে চান এবং যে কোনও ধরণের টাইপ না করে বেছে বেছে বেছে বেছে বেছে বেছে বেছে নিতে পারেন (যদিও আমি সেগুলি সবই ব্যবহার করি না)
  • ভাষার যদি কোনও ফাইল উত্পন্ন করতে হয় তবে এটি আউটপুট ফাইলের নাম জানতে চাইবে

এখানে শেষে আমার সমর্থনকারী কোড সহ ইয়া স্নিপেট।

# -*- mode: snippet -*-
# key: sc
# name: Source Block
# group: HELP
# contributor: gcr@wisdomandwonder.com
# expand-env: ((yas-indent-line 'fixed))
# --
#+NAME: ${1:`(help/org-id-new)`}
#+BEGIN_SRC ${2:$$(let ((langs (sort (-map (lambda (x) (symbol-name (car x))) (if (-contains? org-babel-load-languages '(js . t)) (-snoc org-babel-load-languages '(javascript . t)) org-babel-do-load-languages)) 'string<))) (yas-choose-value (if (-contains? langs "shell") (-snoc langs "sh") langs)))}${2:$(when (-contains? '("ditaa" "dot" "plantuml") yas-text) (concat " :file \\"./image/" (yas-field-value 1) ".png\\""))} $3
$0
#+END_SRC

এর জন্য ড্যাশ এবং org- মোড লোড হওয়া প্রয়োজন।

(require 'org-id)
(setq org-id-link-to-org-use-id 'nil)
(setq org-id-prefix (concat "org_" (user-real-login-name) "_" (format-time-string "%Y-%m-%d") "_" (system-name)))
(setq org-id-method 'uuid)
(defun help/org-id-new ()
  "Re-purposing `org-id' hit a snag when colons were forbidden in Source-Block
  names. Adding support for a user-defined Org-Id separator would have fixed
  this but with no benefit to Org-Id. So this function removes the colon
  instead.
 "
  (interactive)
  (let* ((gend (org-id-new))
         (newid (replace-regexp-in-string ":" "_" gend)))
    newid))

আপনার এই আইডি ফাংশনটির উদাহরণ এখানে রয়েছে:

C-u M-:
(insert (help/org-id-new))

ফলাফল স্বরূপ

org_gcr_2017-08-06_mara_DD608C9A-33B0-4A8D-9123-298746BE973Anil

2
;;; package --- Summary
;;; Commentary:
;;; Code:
(defvar org-sai-src-default "C++"
 "This is the list used to store the default label for source code section.")

(defun org-insert-src-block ()
  "Insert the source code section in `org-mode'."
  (interactive)
  (let* ((src-code-types
          '("emacs-lisp" "python" "C" "sh" "java" "js" "clojure" "C++" "css"
            "calc" "asymptote" "dot" "gnuplot" "ledger" "lilypond" "mscgen"
            "octave" "oz" "plantuml" "R" "sass" "screen" "sql" "awk" "ditaa"
            "haskell" "latex" "lisp" "matlab" "ocaml" "org" "perl" "ruby"
            "scheme" "sqlite"))
         (src-prompt-str
          (concat "Source code type (default "
                  org-sai-src-default
                  "): "))
         (temp-src-code-types 
          (cons org-sai-src-default src-code-types))
         (src-type-str
          (completing-read src-prompt-str temp-src-code-types
                           nil nil nil nil org-sai-src-default)))
    (setq org-sai-src-default src-type-str))
    (insert (format "#+BEGIN_SRC %s\n" src-type-str))
    (newline)
    (org-indent-line)
    (insert "#+END_SRC\n")
    (forward-line -2))))

(add-hook 'org-mode-hook
          (lambda ()
            ;; keybinding for inserting code blocks
            (local-set-key (kbd "C-c s") 'org-insert-src-block)))

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