পাঠ্য মোডে ইমাক্সে 4 স্পেস ইন্ডেন্ট সেট করুন


159

TABমেজর মোডের সাহায্যে বাফারগুলিতে চাপ দেওয়ার সময় আমি ইমাসকে 8 স্পেস ট্যাব থেকে 4 স্পেস ট্যাবে স্যুইচ করতে ব্যর্থ হয়েছি text-mode। আমি আমার সাথে নিম্নলিখিতগুলি যুক্ত করেছি .emacs:

(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)

;;; And I have tried
(setq indent-tabs-mode nil)
(setq tab-width 4)

আমি কীভাবে আমার .emacsফাইল (বা আমার বাফারের স্থানীয় ভেরিয়েবলগুলি) পরিবর্তন করব TABতা বিবেচনা না করে বোতামটি সর্বদা একই কাজ করে।

  1. যদি উপরে কোনও পাঠ্য না থাকে তবে 8 টি স্পেস ইনডেন্ট করুন
  2. পূর্ববর্তী লাইনে যদি পাঠ্য থাকে তবে দ্বিতীয় শব্দের শুরুর দিকে ইন্ডেন্ট করুন

আমি যতটা ইমাক্সকে ভালবাসি এটি বিরক্তিকর হয়ে উঠছে। পূর্ববর্তী লাইনে কোনও পাঠ্য না থাকলে কমপক্ষে 4 স্পেসে ইমাকস করার কোনও উপায় আছে কি?


একটি মোড লাইনের জন্য C ++ বা csharp- মোডের জন্য আমি (setq ট্যাব-প্রস্থ 4) (setq সি-বেসিক-অফসেট 4) (ডিফুন সিশার্প-মোড () ...) এর শেষে যুক্ত করেছি এবং এটি তৈরি করার কৌশলটি করেছে ( 1) ট্যাবগুলি 8 টি অক্ষরের পরিবর্তে 4 হিসাবে দেখায় এবং (2) আমি যখন ট্যাব টিপব তখন আমি একটি নতুন লাইনে 4 টি স্পেস পাবো।
জ্যারেড আপডেটিকে

খুব দেরিতে, তবে আমি বুঝতে পেরেছি (setq ট্যাব-প্রস্থ 4) ব্যবহার করা কার্যকর হয় না, তবে আপনি যদি (setq-default ট্যাব-প্রস্থ 4) ব্যবহার করেন তবে আপনাকে আর কিছু করার দরকার নেই।
সংবাত্যোন

আপনি যদি স্থানগুলি ব্যবহার করতে চান তবে ট্যাব স্টপগুলিতে যান তবে আমার উত্তর দেখুন।
ফোরকান্ডওয়েট

এই প্রশ্নটি খুঁজে পেয়েছে এমন অন্যদের কাছে নোট করুন: আপনি "-ডিফল্ট "টি মিস করেন নি এমনটি নিশ্চিত হওয়ার (setq-default tab-width 4)মতো (setq tab-width 4)নয়!
জাচায়সান

10
আমি বিশ্বাস করতে পারি না এটি করা এত কঠিন।
gwg

উত্তর:


30
(customize-variable (quote tab-stop-list))

অথবা অ্যাড ট্যাব-থামুন-তালিকা প্রবেশের অর্ডারি সেট ভেরিয়েবল মধ্যে .emacs ফাইল:

(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120))))

9
উভয় ট্যাব-প্রস্থ এবং ট্যাব-স্টপ-তালিকা প্রয়োজন। ট্যাব প্রস্থ যখন ট্যাবগুলি প্রদর্শনের সময় ব্যবহৃত হয়, আপনি যখন ট্যাবগুলি যোগ করেন তখন ট্যাব স্টপগুলি নির্ধারণের জন্য ট্যাব-স্টপ-তালিকার প্রয়োজন হয়।
মাইকেল রতনপিন্থ

3
দয়া করে মনে রাখবেন stackoverflow.com/questions/69934/...
phils

5
এর চেয়ে সংক্ষিপ্ত আর কিছুই নেই '(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120)))? ঠিক আছে, যতক্ষণ এটি কাজ করে আমি অনুমান করি ...: পি
হ্যালো গুডবাই

5
ডকুমেন্টেশন অনুযায়ী আপনার এই সমস্ত পদের প্রয়োজন নেই। কেবল 4 8 12 করুন এবং এটি অন্যান্য সমস্তগুলিতে প্রসারিত হবে (4 যোগ করে রাখুন)। সম্ভবত আপনি যদি 3 এর পরিবর্তে 1 বা 2 উপাদান ব্যবহার করেন তবে এটি কেবল শেষ পদক্ষেপ হিসাবে ট্যাব-প্রস্থ ব্যবহার করবে। সুতরাং তাত্ত্বিকভাবে, যদি আমি চারটি স্পেস দিয়ে ট্যাব করতে চাইতাম, এবং আমার ট্যাব-প্রস্থটি 4 এ সেট করা হয়েছিল I আমি লিখতে পারতাম '(tab-stop-list (quote (4)))
নিকোলাস পিটারসন

1
@ নিকোলাস পিটারসন যে লক্ষ করার জন্য আপনাকে ধন্যবাদ! যদিও এটি মনে হবে, quoteঅনুক্রমের বিজ্ঞাপনের ইনফিনিটাম চালিয়ে যাওয়ার জন্য অনুশীলনে দুটি সংখ্যা দরকার। দেখুন: stackoverflow.com/a/42148697/2662028
ryanpcmcquen

138

সংক্ষিপ্ত উত্তর:

মূল বিষয় হ'ল ইড্যাকগুলি ইনডেন্ট করার সময় যা কিছু সন্নিবেশ করানোর জন্য বলা হয়, এটি ইনডেন্ট-লাইন-ফাংশন পরিবর্তন করে সম্পন্ন করা হয়। এটি একটি ট্যাব sertোকানো এবং তারপরে 4 টি স্পেস সারণির পরিবর্তে 4 টি স্পেসে ট্যাবগুলি পরিবর্তন করা আরও সহজ। নিম্নলিখিত কনফিগারেশন আপনার সমস্যার সমাধান করবে:

(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)

ব্যাখ্যা:

মেজর মোড @ ইমাস ম্যানুয়াল দ্বারা নিয়ন্ত্রিত ইনডেন্টেশন থেকে :

প্রতিটি বড় মোডের একটি গুরুত্বপূর্ণ কাজ হ'ল ভাষা সম্পাদনা করার জন্য সঠিকভাবে ইনডেন্টের জন্য কীটি কাস্টমাইজ করা।

[...]

ইনডেন্ট-লাইন-ফাংশন ভেরিয়েবলটি হ'ল ফাংশনটি (এবং বিভিন্ন কমান্ড, যেমন ইনডেন্ট-অঞ্চল কল করার সময়) বর্তমান লাইনে ইন্ডেন্ট করতে ব্যবহৃত হয়। কমান্ড ইনডেন্ট-টু-মোড এই ফাংশনটিকে কল করার চেয়ে বেশি কিছু করে না।

[...]

ডিফল্ট মান অনেক মোডের জন্য ইনডেন্ট-আপেক্ষিক।

ইনডেন্ট-আপেক্ষিক @ ইমাস ম্যানুয়াল থেকে:

পূর্ববর্তী ননব্ল্যাঙ্ক লাইনে পরবর্তী ইনডেন্ট পয়েন্টের অধীনে ইনডেন্ট-সম্পর্কিত স্পেস আউট।

[...]

পূর্ববর্তী ননব্ল্যাঙ্ক লাইনে কলাম পয়েন্ট শুরু হওয়ার বাইরে কোনও ইনডেন্ট পয়েন্ট না থাকলে তার পরিবর্তে 'ট্যাব-টু-ট্যাব-স্টপ' সম্পন্ন করা হবে।

সন্নিবেশ-ট্যাব ফাংশনে ইনডেন্ট-লাইন-ফাংশনের মান পরিবর্তন করুন এবং 4 টি স্পেস হিসাবে ট্যাব সন্নিবেশকে কনফিগার করুন।


10
ওপি-র মতোই আমারও সমস্যা আছে, আপনার সমাধানটি আমার পক্ষে কাজ করে না।
গৌথির

দয়া করে আরও বিস্তারিত বলুন। আপনি কি বোঝাতে চাইছেন যে উপরের লাইনগুলি আপনার .emacs এর একমাত্র বিষয়বস্তু হিসাবে ব্যবহার করা এবং "এমএক্স ইনডেন্ট-অনুযায়ী-মোড" কল করা 4 টি স্থান সন্নিবেশ করবে না?
4

3
আপনার বিভ্রান্তি আমার জন্য 8 টি স্পেস .োকায়।
ভ্লাদিমির মিহাইলেন্সো

4
আমি ইমাস সংস্করণ 23.3.1 ব্যবহার করছি এবং সংক্ষিপ্ত উত্তর এটি স্পেসে পরিবর্তন করে না। এই উত্তরটি বিভ্রান্তিকর।
VNarasimhaM

2
@ ব্রুসবার্নেট আমি পাঠ্য মোডে আছি এবং এই নির্দেশাবলী এখনও কার্যকর হয় না।
রোদে

66

আপডেট: ইমাস 24.4 থেকে:

tab-stop-listসুস্পষ্টভাবে এখন অসীমের দিকে প্রসারিত। এর ডিফল্ট মানটি পরিবর্তিত হয় nilযার অর্থ একটি ট্যাব প্রতিটি tab-widthকলাম থামিয়ে দেয় ।

যার অর্থ হ'ল tab-stop-listনীচে দেখানো পথে আর সেট করার দরকার নেই কারণ আপনি এটি সেট করে রাখতে পারেন nil

আসল উত্তর নিম্নলিখিত ...


এটি সর্বদা আমার সামান্য জিনিস দেখে ব্যথা করে যেমন ফাংশনটি (setq tab-stop-list 4 8 12 ................)যখন number-sequenceবসে থাকার জন্য অপেক্ষা করা হয় তখন।

(setq tab-stop-list (number-sequence 4 200 4))

অথবা

(defun my-generate-tab-stops (&optional width max)
  "Return a sequence suitable for `tab-stop-list'."
  (let* ((max-column (or max 200))
         (tab-width (or width tab-width))
         (count (/ max-column tab-width)))
    (number-sequence tab-width (* tab-width count) tab-width)))

(setq tab-width 4)
(setq tab-stop-list (my-generate-tab-stops))

এটি আমার একমাত্র উত্তর যা আমি আমার সিস্টেমে কাজ করতে পারি।
কার্পভ

ইমাস ইনডেন্ট কাস্টমাইজ পৃষ্ঠায় ট্যাব তালিকাটি "অন্তর্নিহিতভাবে শেষ
ধাপটির পুনরাবৃত্তি করে অনন্তকে

@ জেমস ওয়াল্ডবি-জেপ্প্যাট Indeed প্রকৃতপক্ষে, এটি 24.4 (2014) এ হয়েছিল। নিউজ বলছে: " tab-stop-listএখন অন্তর্নিহিতভাবে অনন্তে প্রসারিত হয়েছে Its এর ডিফল্ট মানটি শূন্যে পরিবর্তিত হয় যার অর্থ একটি ট্যাব প্রতিটি tab-widthকলাম থামিয়ে দেয় " " - সুতরাং বাস্তবে আপনি কেবল এর ডিফল্ট মানটি ব্যবহার করতে পারেন nil
ফিল্ড করুন

21

নীচে আপনার ট্যাবগুলি সেট আপ করা আপনার পক্ষে আরও সহজ হতে পারে:

M-x customize-group

Customize group:প্রম্পট প্রবেশ indent

আপনি একটি স্ক্রিন দেখতে পাবেন যেখানে আপনি আপনার সমস্ত ইনডেন্টিং বিকল্পগুলি সেট করতে এবং বর্তমান সেশনের জন্য সেগুলি সেট করতে বা ভবিষ্যতের সমস্ত সেশনের জন্য সেভ করতে পারবেন।

আপনি যদি এভাবে এটি করেন তবে আপনি একটি কাস্টমাইজেশন ফাইল সেট আপ করতে চাইবেন ।


আমার Mx কাস্টমাইজ-গ্রুপ মনে রাখা দরকার - খুব সহজ শর্টকাট!
নিক বোল্টন

11
(setq tab-width 4)
(setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80))
(setq indent-tabs-mode nil)

10
(defun my-custom-settings-fn ()
  (setq indent-tabs-mode t)
  (setq tab-stop-list (number-sequence 2 200 2))
  (setq tab-width 2)
  (setq indent-line-function 'insert-tab))

(add-hook 'text-mode-hook 'my-custom-settings-fn)

এই পৃষ্ঠায় অন্যরা না করলে এটি আমার পক্ষে কাজ করে।
মাইকেল টেরি

ইমাসে কাজ করে26.3
সৌরভ

9
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)
(setq c-default-style "linux") 
(setq c-basic-offset 4) 
(c-set-offset 'comment-intro 0)

এটি সি ++ কোড এবং খুব কমেন্টের ভিতরেও কাজ করে


পার্টিতে দেরীতে, তবে আপনাকে ধন্যবাদ। আমি বুঝতে পারি না যে কেন ইমাসকে তার সিডিং নিয়মগুলি সি / সি ++ কোডেও প্রয়োগ করতে নির্দিষ্ট নির্দেশাবলীর প্রয়োজন হবে। আমি ভবিষ্যতে
ভিমে

আমি নিজেই এই প্রশ্নটি জিজ্ঞাসা করতে চাই তবে আমি এই উত্তরটি মেনে নিতে পারি। আমি পারলে অনুগ্রহ দিতাম। আমি খুব, খুব খারাপ হয়ে গিয়েছিলাম যে ইমামকে 4 এ ট্যাবে অনিচ্ছুক পরিবর্তন করা হয়েছিল, এই পৃষ্ঠার সমস্ত সমাধানের মধ্য দিয়ে চলেছে, এবং আপনি আমাকে প্রচুর পরিমাণে কাজ বাঁচিয়েছেন!
টপোলজিকাল বাছাই

7

এই সমস্যাটি ট্যাব স্টপগুলি হারিয়ে যাওয়ার কারণে ঘটে না; এটি ইমাকের কাছে একটি (নতুন?) ট্যাব পদ্ধতি রয়েছে যা ইনডেন্ট-রিলেটিভ নামে পরিচিত যা টেবুলার ডেটা লাইন করার জন্য ডিজাইন করে। ট্যাব কীটি পদ্ধতিটি ইনডেন্ট-ফর-ট্যাব-কমান্ডে ম্যাপ করা হয়েছে, যা ভেরিয়েবল ইনডেন্ট-লাইন-ফাংশন সেট করা যাই হোক না কেন পদ্ধতিতে পাঠ্য মোডের জন্য ইনডেন্ট-আপেক্ষিক পদ্ধতি calls আমি ইনডেন্ট-লাইন-ফাংশন ভেরিয়েবলকে ওভাররাইড করার একটি ভাল উপায় খুঁজে পাইনি (টেক্সট মোড হুক কাজ করছে না, তাই মোড-হুকগুলি চালানোর পরে এটি পুনরায় সেট হয়ে যাচ্ছে?) তবে এ থেকে মুক্তি পাওয়ার একটি সহজ উপায় আচরণটি হ'ল কেবল ট্যাব-থেকে-ট্যাব-স্টপ পদ্ধতিতে সহজ ট্যাব-এ টিএবি সেট করে ট্যাব-কমান্ডের জন্য ইন্টেন্ট-এর জন্য পদ্ধতিটি চেক করা:

(কী-পাঠ্য-মোড-মানচিত্রের সংজ্ঞা দিন (কেবিডি "টিএবি") 'ট্যাব-টু-ট্যাব-স্টপ)


6

এটা চেষ্টা কর:

(add-hook 'text-mode-hook
  (function
   (lambda ()
     (setq tab-width 4)
     (define-key text-mode-map "\C-i" 'self-insert-command)
     )))

এটি ট্যাবকে সর্বদা একটি 4 টি অক্ষর (কেবলমাত্র পাঠ্য মোডে) থামিয়ে ট্যাব সহ একটি আক্ষরিক ট্যাব অক্ষর প্রবেশ করিয়ে দেবে। আপনি যদি যা চাইছেন তা যদি না হয় তবে দয়া করে আপনি যে আচরণটি দেখতে চান তা বর্ণনা করুন।


4
আমার মনে হয় ওপি ট্যাবগুলির পরিবর্তে ফাঁকা স্থান চায় (সুতরাং ট্যাবটি 4 টি স্পেস সন্নিবেশ করায়)।
মিপাদি

অ্যাকোম্যাকাস ২.৪ এর সাথে একত্রে, এই নির্দিষ্ট উত্তরটি আমাকে একটি ট্যাবের পরিবর্তে অন্য ভাষায় অক্ষর দেয়: 렔 렔 যদি ট্যাব কীটি একাধিকবার টিপে থাকে তবে ফলাফলটি হয়: 렔렔 (কোনও বিচ্ছেদ ছাড়াই)। এবং এটি প্রতিটি ক্রমাগত ট্যাব প্রেসের ক্ষেত্রে সত্য।
আইনজীবি

6

আপনি আপনার .emacs ফাইলে কোডের এই লাইনগুলি যুক্ত করতে পারেন। এটি ইনডেন্ট-আপেক্ষিকের পরিবর্তে সন্নিবেশ-ট্যাবটি ব্যবহার করতে পাঠ্য মোডের জন্য একটি হুক যুক্ত করে।

(custom-set-variables
 '(indent-line-function 'insert-tab)
 '(indent-tabs-mode t)
 '(tab-width 4))
(add-hook 'text-mode-hook
      (lambda() (setq indent-line-function 'insert-tab)))

আমি আসা করি এটা সাহায্য করবে.


4

কেবল সি-সেট-স্টাইল দিয়ে স্টাইল পরিবর্তন করা আমার পক্ষে যথেষ্ট ছিল।


4

এটি আপনার .emacs ফাইলে যুক্ত করুন:

এটি কোনও ট্যাবকে 2 টি অক্ষরে প্রদর্শিত হবে এমন প্রস্থটি সেট করবে (2 নম্বরটি আপনি যা চান পরিবর্তন করুন)

(setq default-tab-width 2)

ইমাকস আসলে জায়গাগুলির পরিবর্তে ট্যাব ব্যবহার করছে তা নিশ্চিত করার জন্য:

(global-set-key (kbd "TAB") 'self-insert-command)

অন্যদিকে, কোনও ট্যাবকে ব্যাকস্প্যাক করার সময় ইম্যাকের জন্য ডিফল্ট হ'ল এটিকে স্পেসে রূপান্তর করা এবং তারপরে একটি স্থান মুছতে হয়। এটি বিরক্তিকর হতে পারে। আপনি যদি এটি কেবল ট্যাবটি মুছতে চান তবে আপনি এটি করতে পারেন:

(setq c-backspace-function 'backward-delete-char)

উপভোগ করুন!


প্রশ্নটিতে জিজ্ঞাসা করা কমপক্ষে 4 টি স্পেস পূরণ করে না।
কুমারশ

2

এটিই কেবলমাত্র একমাত্র সমাধান যা আমার জন্য কোনও ট্যাবকে sertedোকানো থেকে বাধা দেয় না, কোনও ক্রম বা ট্যাবগুলিকে স্পেসে রূপান্তর ছাড়াই। এগুলি উভয়ই পর্যাপ্ত, তবে অপব্যয়যুক্ত বলে মনে হয়েছিল:

(setq-default
    indent-tabs-mode nil
    tab-width 4
    tab-stop-list (quote (4 8))
)

নোট করুন যে quoteকাজ করতে দুটি সংখ্যা প্রয়োজন (তবে বেশি নয়!)।

এছাড়াও, বেশিরভাগ প্রধান মোডে ( Pythonউদাহরণস্বরূপ), ইড্যাক্স ইমা্যাকগুলিতে স্বয়ংক্রিয়। আপনার যদি অটো ইনডেন্টের বাইরে ইনডেন্ট করতে হয় তবে ব্যবহার করুন:

M-i


2

কাস্টমাইজেশনগুলি ছায়া দিতে পারে (setq tab width 4)তাই হয় ব্যবহার করুন setq-defaultবা কাস্টমাইজ করুন আপনি কী করছেন তা জানান। আমারও ওপি-এর মতো সমস্যা ছিল এবং এটি একাই এটির সাথে স্থির করেছিলাম, সামঞ্জস্য করার দরকার নেই tab-stop-listবা কোনও insertকার্যকারিতা নেই:

(custom-set-variables
 '(tab-width 4 't)
 )

এটি যুক্ত করার সাথে সাথে এটি কার্যকরভাবে পাওয়া যায় (ইমাসউইকি থেকে একটি পরামর্শ):

(defvaralias 'c-basic-offset 'tab-width)
(defvaralias 'cperl-indent-level 'tab-width)

1

আমি .emacs ফাইলে এটি না লিখে সেরা উত্তরের জন্য কাজ করে নি:

(global-set-key (kbd "TAB") 'self-insert-command)

0

আপনি চেষ্টা করেছেন?

(setq  tab-width  4)

2
তাদের প্রশ্নে এটি রয়েছে, সুতরাং হ্যাঁ, তারা এটি চেষ্টা করে দেখে মনে হয় নিরাপদ।
ryanpcmcquen



0

আমার আর ডি ফাইলটি ভিন্ন, কারণ আমি ট্যাবগুলির পরিবর্তে ফাঁকা স্থান চেয়েছিলাম:

(অ্যাড-হুক 'স্কেল-মোড-হুক
          (ল্যাম্বদা ()
             (progn
               (সেটেক-ডিফল্ট ট্যাব-প্রস্থ 4)
               (setq ইনডেন্ট-ট্যাবস-মোড শূন্য)
               (setq ইনডেন্ট-লাইন-ফাংশন 'ট্যাব থেকে ট্যাব-স্টপ) 
               (পরিবর্তন-সিনট্যাক্স-এন্ট্রি? _ "ডাব্লু"); এখন '_' কে শব্দের-ডিলিমিটার হিসাবে বিবেচনা করা হয় না
               (পরিবর্তন-সিনট্যাক্স-এন্ট্রি? - "ডাব্লু"); এখন '-' কে শব্দের-ডিলিমিটার হিসাবে বিবেচনা করা হয় না
               )))

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