এক-বাক্য-প্রতি-লাইনে ফাইল সম্পাদনা করা


28

কিছুটা ব্যাকগ্রাউন্ড।

আমি আমার ক্ষীরের নথিগুলি সংস্করণ-নিয়ন্ত্রণ করার চেষ্টা করছি এবং যদি আমি প্রতি-বাক্য-প্রতি-লাইন পদ্ধতি গ্রহণ করি তবে এই উদ্যোগের কার্যকারিতা অনেকাংশে উন্নত হবে।

উদাহরণস্বরূপ, নীচে আমার দস্তাবেজগুলি কেমন দেখাচ্ছে।

Some text here.
New stencence on the same paragraph.
Some more text, still on the same paragraph.

This is another paragraph.

আমার প্রশ্ন সহজ।
এর কতটুকু আমি ইমাক্স দিয়ে স্বয়ংক্রিয় / উন্নত করতে পারি?

নিম্নলিখিত দুটি বিষয় আমার মনে আছে।

  1. আমার বাক্যগুলি দীর্ঘ , সুতরাং লাইনগুলি আসলে ভরাট না করে মোড়ানো দরকার। এটি হ'ল আমার পর্দার বেশ কয়েকটি লাইন ধরে একটি দীর্ঘ দীর্ঘ বাক্যটি প্রদর্শিত হওয়া দরকার, তবে এটি ".tex" ফাইলটিতে একটি লাইন হওয়া দরকার । এটি সাধারণত এমনভাবে সম্পন্ন হবে যাতে সমীকরণগুলি মোড়ানো না হয়।

    visual-line-modeউইন্ডো প্রস্থে মোড়ানো, এটি খুব প্রশস্ত। আমার এমন কিছু দরকার যা লাইনগুলিকে আবৃত করে এবং তাদের প্রস্থটি 80 বা এর চেয়ে বেশি অক্ষরের মধ্যে সীমাবদ্ধ করে। ঠিক যেমনটি fill-paragraphসাধারণত করা হয় তবে ফাইলে লাইনগুলি না ভেঙে।

  2. আমি প্রতিটি বাক্য পরে ম্যানুয়ালি লাইনটি ভেঙে ফেলতে পারি, তবে এটির চেয়ে বেশি পছন্দনীয় যদি আমি লাইনে প্রতি বাক্যটি পাশাপাশি একটি fill-paragraphবাক্যও কনফিগার করতে পারি (বা এমনকি এমনকি auto-fill-mode)ও।

1
আপনি ঠিক কি পরে উন্নতি / অটোমেশন? আপনি কীভাবে এই জাতীয় ফাইলগুলিতে কার্যকরভাবে সম্পাদনা করবেন তা জানতে চান?
রাঙ্গি লিন

@ রাঙ্গিলিন হ্যাঁ আমি প্রথম যে বিষয়টির কথা উল্লেখ করেছি তা আমার জন্য সবচেয়ে গুরুত্বপূর্ণ বিষয়। তবে এটিকে আরও কার্যকর করার জন্য অন্য যে কোনও কিছুই স্বাগত।
মালবারবা

প্রথম পয়েন্টে বর্ণনাটি দেখতে দেখতে ভাল লাগে visual-line-mode। তবে সেই লাইন মোড়ানো ছাড়াও, আপনাকে প্রতিটি বাক্যটির পরেও একটি নতুন লাইনের চরিত্রটি স্বয়ংক্রিয়ভাবে প্রবেশ করাতে হবে, তাই না?
দক্ষ মোদী

@ কৌশালমোদি হ্যাঁ, তবে প্রতিটি বাক্যটির পরে নতুন লাইনটি আসল, এটি ফাইলটিতে থাকা উচিত। ভিজ্যুয়াল লাইন মোডের সমস্যা হ'ল এটি ডিফল্টরূপে খুব প্রশস্ত। যদি এটি হ্রাস করার উপায় থাকে তবে তা দুর্দান্ত be
মালবারবা

@ মালবারবা: আপনি কেন জানেন? আমার কাছে, এটি এখন পর্যন্ত সবচেয়ে কার্যকর মোড়ানোর মোড ...
টিখন জেলভিস

উত্তর:


11

আপনি যদি কেবল visual-line-modeকনফিগার করার মতো কিছু চান তবে আপনি চেষ্টা করতে পারেন longlines-modeযা আমি আমার বেশিরভাগ গদ্যের জন্য ব্যবহার করি। longlines-modeআপনার পাঠ্যটি visual-line-modeকনফিগার করা প্রস্থের সাথে একইভাবে মোড়ানো fill-column

এখানে fill-columnসেট সহ একটি স্ক্রিনশট রয়েছে 70(উইন্ডোটি আসলে ডানদিকে আরও প্রসারিত হয়)।

লম্বলাইন-মোড মোড়ানোর পাঠ্যের একটি উদাহরণ।

কনফিগারেশন fill-paragraphঝরঝরে হবে, তবে এটি কীভাবে করবেন তা সম্পর্কে আমি নিশ্চিত নই। পরিবর্তে, এখানে একটি যুক্তিসঙ্গত অস্থায়ী হ্যাক: .একটি নতুন লাইন সন্নিবেশ করে আপনার অক্ষরটিকে টেক্স মোডে বৈদ্যুতিন করুন। এর মধ্যে এটি উপযুক্ত মোড হুক যা-ই হোক না কেন এটি রিব্যান্ডিংয়ের সাথে জড়িত:

(defun my-electric-dot ()
  (interactive)
  (insert ".\n"))
(defun my-tex-hook ()
  (local-set-key (kbd ".") 'my-electric-dot))
(add-hook 'TeX-mode-hook 'my-tex-hook)

1
লংলাইনস-মোডে নির্দেশ করার জন্য অনেক ধন্যবাদ! আমি এটি সমীকরণগুলি মোড়ানো না করতে এবং ইন্ডেন্টেড লাইনের চেহারা ঠিক করতে সক্ষম হয়েছি। এখানে জিস্ট. github.com/c532f77144ddf86b4ea4.git
মালবারবা

@ মালবারবা: শীতল। আমি সম্ভবত এই পরিবর্তনগুলি কিছু ব্যবহার করব! আপনার লিঙ্কটি যদিও সঠিকভাবে কাজ করে না; এখানে একটি ওয়েব-বান্ধব সংস্করণ: gist.github.com/Bruce-Connor/c532f77144ddf86b4ea4
টিখন জেলভিস

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

যাইহোক, এটি লক্ষণীয় যে লম্বলাইন-মোডটি 24.4-এ অচল হিসাবে চিহ্নিত হয়েছে (এটির সমতুল্য বিকল্প নেই),
মালবারবা

2
বৈদ্যুতিক বিন্দুটি ভালভাবে কাজ করে না কারণ বিন্দুগুলি কেবল বাক্য শেষ করতে ব্যবহৃত হয় না তবে সমস্ত ধরণের অন্যান্য উদ্দেশ্যেও ব্যবহৃত হয়। একটি নিউটলিনের পরে একটি বিন্দুর পরে দুটি স্পেসের পরে একটি বিন্দুর প্রতিস্থাপন করা ভাল।
টমলসবার্গ

13

(1) এর জন্য, আমি একটি প্রসারিত মার্জিন ব্যবহার করব, যাতে visual-line-modeকাঙ্ক্ষিত লাইনগুলি মোড়ানো হয় fill-column। যদিও এটি পাঠ্য লাইন এবং সমীকরণ উভয়কেই প্রভাবিত করবে।

(2) হিসাবে, কেউ M-qঅনুচ্ছেদে আবদ্ধ হতে এবং সঠিকভাবে অনুচ্ছেদে পূরণ করার জন্য একটি কাস্টম ফিলিং কমান্ডকে সংজ্ঞায়িত করতে পারে । আমি স্বতঃপূর্ণ করার জন্য সঠিক আচরণ সহ একটি আদেশ লিখতে এখনও সক্ষম হইনি।

এগুলি সমস্ত একটি ছোটখাটো মোডে মুড়িয়ে ফেলা নিচের মত দেখতে পারা যায়। এটি খুব সুন্দর কোড নয়, তবে বেশিরভাগ ক্ষেত্রেই কাজ করা উচিত। ( সমস্যাটি লক্ষ্য না করেই বেশ কিছুদিন unfill-paragraphআমার মধ্যে ফাংশনটি ছিল init.el)।

(define-minor-mode ospl-mode
  "One Sentence Per Line"
  :init-value nil
  :lighter " ospl"
  :keymap (let ((map (make-sparse-keymap)))
            (define-key map (kbd "M-q") 'ospl/fill-paragraph)
            map)

  (if ospl-mode
      (progn
        (visual-line-mode 1)
        (setq right-margin-width (- (window-body-width) fill-column)))
    (visual-line-mode -1)
    (setq right-margin-width 0))

  ;; Account for new margin width
  (set-window-buffer (selected-window) (current-buffer)))


(defun ospl/unfill-paragraph ()
  "Unfill the paragraph at point.

This repeatedly calls `join-line' until the whole paragraph does
not contain hard line breaks any more."
  (interactive)
  (forward-paragraph 1)
  (forward-paragraph -1)
  (while (looking-at paragraph-start)
    (forward-line 1))
  (let ((beg (point)))
    (forward-paragraph 1)
    (backward-char 1)
    (while (> (point) beg)
      (join-line)
      (beginning-of-line))))


(defun ospl/fill-paragraph ()
  "Fill the current paragraph until there is one sentence per line.

This unfills the paragraph, and places hard line breaks after each sentence."
  (interactive)
  (save-excursion
    (fill-paragraph)         ; takes care of putting 2 spaces if needed
    (ospl/unfill-paragraph)  ; remove hard line breaks

    ;; insert line breaks again
    (let ((end-of-paragraph (make-marker)))
      (save-excursion
        (forward-paragraph)
        (backward-sentence)
        (forward-sentence)
        (set-marker end-of-paragraph (point)))
      (forward-sentence) 
      (while (< (point) end-of-paragraph)
        (just-one-space)
        (delete-backward-char 1)
        (newline)
        (forward-sentence))
      (set-marker end-of-paragraph nil)))) 

অনুচ্ছেদে ভরাট দুর্দান্ত কাজ করে, আমি আশা করি আমি দুটি উত্তর গ্রহণ করতে পারি। শুধু প্রতিস্থাপন unfill-paragraphসঙ্গে ospl/unfill-paragraph। মার্জিনগুলিও কাজ করে, তবে ইন্টেন্টেড পাঠ্যটি খারাপ দেখায় এবং সেগুলি সমীকরণগুলিকেও মোড় দেয়, আমি নীচে দীর্ঘমেয়াদী পদ্ধতিটি এই দুটি সমস্যার সমাধান করতে পেরেছি।
মালবারবা

স্থির, ধন্যবাদ। যেমনটি আমি বলেছি, দীর্ঘদিন ধরে unfill-paragraphআমার মধ্যে (অপ্রস্তুত) ছিল had init.elধারাবাহিকতার জন্য আমি গতকাল কেবল এটির উপসর্গ করেছি এবং একটি বাগ প্রবর্তন করেছি ....
ffevotte

হ্যাঁ, আমি অনুভব করেছি এটি এমন কিছু ছিল। আমি আরও বুঝতে পেরেছিলাম যে আমরা সম্ভবত অনুধাবন করতে পারি ঠিক তেমন কিছু করে (let ((fill-column 1000000)) (fill-pragraph))। যদিও এটি এখনও পরীক্ষা করা হয়নি।
মালবারবা

হ্যাঁ, এই জাতীয় সমাধান কাজ করে। আমি কেবল ম্যাজিক ধ্রুবকগুলি পছন্দ করি না (তবে আমার কোডটি খুব সুন্দর নয়, তাই যে
কোনওটি

1
এই সমাধান ভালবাসা। মন্তব্য করা লাইনগুলি একাধিক লাইনে ভাঙ্গার এড়াতে কি সহজ উপায় আছে?
রামপ্রসাদ

9

আপনি যদি গিট ডিফ - কালার-শব্দ বা ল্যাটেক্সডিফ ব্যবহার করেন তবে কী আপনার সংস্করণ-নিয়ন্ত্রণ সমস্যাগুলি এড়ানো / সমাধান করা সম্ভব? তারপরে আপনি পরিবর্তিত শব্দগুলির দিকে নজর দিতে পারেন।


2
রঙিন শব্দগুলি সত্যই হিংস্র! তবে অন্য ব্যক্তির অবদানকে মার্জ করার সময় এবং পুরানো চুক্তিতে ফিরে যাওয়ার সময় দ্বন্দ্ব এড়াতে আমার এখনও অলপ্স পদ্ধতির প্রয়োজন ।
মালবারবা

2

এটি উন্নত করার একটি উপায় যা আমি বেশ কয়েক বছর ধরে ব্যবহার করেছি (মাঝে মাঝে) লাইন ব্রেকগুলির সাথে বাক্যগুলি প্রদর্শন করে একে অপরের পরে প্রবাহিত হয়ে লাইন ব্রেকগুলি ভাঁজ করে tex-fold(অ্যাকটেক্সের একটি অংশ) সুবিধাগুলি ব্যবহার করে ।

এর অর্থ এই

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Mauris pellentesque fringilla justo, quis dapibus velit tincidunt quis?
Quisque varius ligula arcu, ut imperdiet risus maximus nec.

ভাঁজ করা হয়

Lorem ipsum dolor sit amet, consectetur adipiscing elit⁎ Mauris pellentesque fringilla justo, quis dapibus velit tincidunt quis❓  Quisque varius ligula arcu, ut imperdiet risus maximus nec⁎

আমি সম্প্রতি এটি একটি প্যাকেজে একটি ছোটখাটো মোড হিসাবে একসাথে রেখেছি। সম্ভবত অন্য কেউ এটি দরকারীও পাবেন: https://github.com/andersjohansson/tex-fold-linebreaks

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