এভিল মোড সেরা অনুশীলন? [বন্ধ]


104

আমি বছরের পর বছর ধরে ভিমকে আমার প্রাথমিক সম্পাদক হিসাবে ব্যবহার করছি এবং সেই সময়ে বেশ কয়েকবার ইমাসকে চেষ্টা করেছি। এরপরে আমি এভিলকে আবিষ্কার করে সিদ্ধান্ত নিয়েছিলাম যে এটি আমার গতিময় গতির জন্য যথেষ্ট চাহিদা পূরণ করে যাতে আমি শেষ পর্যন্ত ইমাসে যেতে পারি।

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

উত্তর:


71

আমি একটি অত্যন্ত কাস্টমাইজড ভিএম ব্যবহার করেছি এবং এখন আরও কাস্টমাইজড ইম্যাক ব্যবহার করছি। আমি মনে করি আপনি আমার কী ম্যাপিং কনফিগারেশন ফাইল https://github.com/mbriggs/.emacs.d-oldv2/blob/master/init/init-keymaps.el- এ কী-ম্যাপিংয়ের প্রতিটি উদাহরণ পাবেন I

মনে রাখবেন, আমি এমন স্টাফগুলি রিমান্ড করছি যা প্রকৃত ইমাস ব্যবহারকারীরা ধর্মবিরোধী হিসাবে বিবেচনা করবে, তাই আপনি যদি কখনও "সত্য" ইম্যাকস শিখতে চান তবে ওয়াইএমএমভি (আমি সত্যিই তা করি না)।

যে কোনও প্রাক্তন ভিমারের কাছে আমি একটি জিনিস সুপারিশ করব তা হ'ল এটি

;;; esc quits
(defun minibuffer-keyboard-quit ()
  "Abort recursive edit.
In Delete Selection mode, if the mark is active, just deactivate it;
then it takes a second \\[keyboard-quit] to abort the minibuffer."
  (interactive)
  (if (and delete-selection-mode transient-mark-mode mark-active)
      (setq deactivate-mark  t)
    (when (get-buffer "*Completions*") (delete-windows-on "*Completions*"))
    (abort-recursive-edit)))
(define-key evil-normal-state-map [escape] 'keyboard-quit)
(define-key evil-visual-state-map [escape] 'keyboard-quit)
(define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)

যাতে এসিএস আসলে বেশ কিছু ছেড়ে দেয় (যেমন মিনিবিফারের মধ্যে অনুরোধের অনুরোধগুলি থাকে)



1
@ অ্যাডাম এ সম্পর্কে দুঃখিত>>> আমার প্রচুর স্টাফ ইনস্টল হয়েছে, কখনও কখনও আমি এমন একটি ফাংশন ব্যবহার করি যা আমার মনে হয় যা অন্তর্নির্মিত হয় তবে আসলে অন্য কোথাও থেকে আসে
ম্যাট ব্রিগস

3
আমি দেখতে পাচ্ছি যে এটি আমার পক্ষে কাজ করে না। আমি সর্বশেষতম ইম্যাক্স 24.4 ব্যবহার করি, কেউ কি একই অভিজ্ঞতা করে?
ডিজং নগুইন

1
লিঙ্কটি নষ্ট হয়ে গেছে। আমি বিশ্বাস করি এটিই নতুন: github.com/mbriggs/.emacs.d/blob/master/config/keybinds.el
শন লেদার

1
@ সিন লীদার একটি কাজের লিঙ্কের আপডেট উত্তর।
ক্রিস্টোফার বটমস

34

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

(define-key evil-normal-state-map "\C-e" 'evil-end-of-line)
(define-key evil-insert-state-map "\C-e" 'end-of-line)
(define-key evil-visual-state-map "\C-e" 'evil-end-of-line)
(define-key evil-motion-state-map "\C-e" 'evil-end-of-line)
(define-key evil-normal-state-map "\C-f" 'evil-forward-char)
(define-key evil-insert-state-map "\C-f" 'evil-forward-char)
(define-key evil-insert-state-map "\C-f" 'evil-forward-char)
(define-key evil-normal-state-map "\C-b" 'evil-backward-char)
(define-key evil-insert-state-map "\C-b" 'evil-backward-char)
(define-key evil-visual-state-map "\C-b" 'evil-backward-char)
(define-key evil-normal-state-map "\C-d" 'evil-delete-char)
(define-key evil-insert-state-map "\C-d" 'evil-delete-char)
(define-key evil-visual-state-map "\C-d" 'evil-delete-char)
(define-key evil-normal-state-map "\C-n" 'evil-next-line)
(define-key evil-insert-state-map "\C-n" 'evil-next-line)
(define-key evil-visual-state-map "\C-n" 'evil-next-line)
(define-key evil-normal-state-map "\C-p" 'evil-previous-line)
(define-key evil-insert-state-map "\C-p" 'evil-previous-line)
(define-key evil-visual-state-map "\C-p" 'evil-previous-line)
(define-key evil-normal-state-map "\C-w" 'evil-delete)
(define-key evil-insert-state-map "\C-w" 'evil-delete)
(define-key evil-visual-state-map "\C-w" 'evil-delete)
(define-key evil-normal-state-map "\C-y" 'yank)
(define-key evil-insert-state-map "\C-y" 'yank)
(define-key evil-visual-state-map "\C-y" 'yank)
(define-key evil-normal-state-map "\C-k" 'kill-line)
(define-key evil-insert-state-map "\C-k" 'kill-line)
(define-key evil-visual-state-map "\C-k" 'kill-line)
(define-key evil-normal-state-map "Q" 'call-last-kbd-macro)
(define-key evil-visual-state-map "Q" 'call-last-kbd-macro)
(define-key evil-normal-state-map (kbd "TAB") 'evil-undefine)

(defun evil-undefine ()
 (interactive)
 (let (evil-mode-map-alist)
   (call-interactively (key-binding (this-command-keys)))))

দুর্ভাগ্যক্রমে, ভিমগুলি "একটি স্ক্রিন উপরে বা নীচে সরান" অপারেশনগুলির সাথে এই ওভারল্যাপগুলি। তবে আমি পরিবর্তে নিম্নলিখিতটি ব্যবহার করে স্বাচ্ছন্দ্য বোধ করেছি:

(define-key evil-normal-state-map (kbd "DEL") (lambda ()
                    (interactive)
                    (previous-line 10)
                    (evil-scroll-line-up 10)
                    ))

(define-key evil-normal-state-map (kbd "=") (lambda ()
                      (interactive)
                      (next-line 10)
                      (evil-scroll-line-down 10)
                      ))

এছাড়াও, আপনি যদি ভিআইএম থেকে আসছেন এবং "জে কে" (বা অন্য কোনও স্ট্রোকের সংমিশ্রণ) ব্যবহার করে normalোকানো থেকে সাধারণ মোডে দ্রুত পথ চান, তবে সবচেয়ে ভাল উপায় হ'ল http://www.emacswiki.org/ থেকে পাঠ্যটি অনুলিপি করা to ইমাস / ডাউনলোড / কী-কর্ড.এল এবং এটি আপনার ~ / .emacs.d / key-chord.el এ পেস্ট করুন। তারপরে আপনার .emacs এ নিম্নলিখিতগুলি যুক্ত করুন:

;load a file named key-chord.el from some directory in the load-path (e.g. "~/.emacs.d")
(require 'key-chord)
(key-chord-mode 1)
(key-chord-define-global "jk" 'evil-normal-state)

এছাড়াও, আপনি যদি ভিআইএম থেকে আসেন এবং আপনি যদি মনে করেন যে ইমাসে থাকা কপি-টু-ক্লিপবোর্ড কোনও ভাল নয়, আপনি সম্ভবত সঠিক right তবে sudo apt-get install xsel চালানোর পরে আপনি নিম্নলিখিত দরকারী ব্যবহার করতে পারেন:

(defun copy-to-clipboard ()
  (interactive)
  (if (display-graphic-p)
      (progn
        (message "Yanked region to x-clipboard!")
        (call-interactively 'clipboard-kill-ring-save)
        )
    (if (region-active-p)
        (progn
          (shell-command-on-region (region-beginning) (region-end) "xsel -i -b")
          (message "Yanked region to clipboard!")
          (deactivate-mark))
      (message "No region active; can't yank to clipboard!")))
  )

(evil-define-command paste-from-clipboard()
  (if (display-graphic-p)
      (progn
        (clipboard-yank)
        (message "graphics active")
        )
    (insert (shell-command-to-string "xsel -o -b"))
    )
  )

(global-set-key [f8] 'copy-to-clipboard)
(global-set-key [f9] 'paste-from-clipboard)

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

অন্য কিছু সত্যই শীতল ফাংশন বাস্তবায়নের জন্য, যেমন মুছে ফেলুন এবং পেস্ট করুন, ক্লিপবোর্ডে অনুলিপি না করে মুছুন, দক্ষ 4x / 16x মুভমেন্ট, পেস্ট রেজিস্টার নির্দিষ্টকরণের জন্য গণনাগুলির ব্যবহার, ট্যাব সেটিংস যা আসলে সি / সি ++ এর জন্য কাজ করে এবং আরও অনেক কিছু আপনি পরীক্ষা করতে পারেন https://github.com/Russell91/emacs এ আমার সম্পূর্ণ গিটারের উপর পূর্ণ .emacs, init.el, my-keymaps.el, এবং my-Funks.el ভার্সনগুলি আউট করুন


2
এগুলি দুর্দান্ত, আমি উইকেম্যাক্সে কিছু যুক্ত করেছি: wikemacs.org/index.php/
এভিল#

আমি ইম্যাকগুলি থেকে আপনার অভ্যাসগুলি পুনরায় ব্যবহার করার ইচ্ছাটি বুঝতে পারি। ফায়ারফক্সে কাজ করার জন্য, আমি ভিম্পিয়ারেটর অ্যাডনটি চেষ্টা করার পরামর্শ দিচ্ছি, যা আপনার ব্রাউজিংয়ে অনেকগুলি ভিআইএম কার্যকারিতা আনায়। তবে এটি ডিফল্টভাবে ভিম মুভমেন্ট কমান্ড ব্যবহার করছে (যেমন lessকমান্ড এবং অন্যদের ক্ষেত্রে )।
জান Vlcinsky

আপনার মতোই, আমি সন্নিবেশ-রাজ্য-মোডে দুষ্টু বাঁধাই পছন্দ করি না, তাই আমি কেবলমাত্র সাধারণ-রাজ্য-মানচিত্রে "i" কে 'দুষ্ট-ইমাকস-স্থিতিতে ফিরিয়ে আনি।
ব্যবহারকারী 49117

এর কীবোর্ডটি ওভাররাইড না করে evil, আমি এটি সরিয়ে ফেললাম, তাই এটি স্বাভাবিক ইমাসের কীবোর্ড সেটিংসে ফিরে আসে, উদাহরণস্বরূপ(dolist (m (list evil-normal-state-map evil-motion-state-map evil-insert-state-map)) (define-key m "\C-e" 'nil))
বাচ লিয়েন

30

আমি বিপুল পরিমাণ কনফিগারেশন সহ একটি ভাইপার / ভিম্পলস ব্যবহারকারীও হয়ে থাকি । তারপরে আমি এভিল-মোড পেলাম।

এই বিষয়ে আপনার ভাগ করে নেওয়ার যোগ্য অভিজ্ঞতা / টিপস কী?

এটি আমার পুরো দুষ্টু-মোড কনফিগারেশন এবং এটি আমার পক্ষে দুর্দান্ত কাজ করে:

(require 'evil)
(evil-mode 1)

;; Remap org-mode meta keys for convenience
(mapcar (lambda (state)
    (evil-declare-key state org-mode-map
      (kbd "M-l") 'org-metaright
      (kbd "M-h") 'org-metaleft
      (kbd "M-k") 'org-metaup
      (kbd "M-j") 'org-metadown
      (kbd "M-L") 'org-shiftmetaright
      (kbd "M-H") 'org-shiftmetaleft
      (kbd "M-K") 'org-shiftmetaup
      (kbd "M-J") 'org-shiftmetadown))
  '(normal insert))

আপনি কি এই মোড এবং অন্যদের মধ্যে কোনও দ্বন্দ্বের মুখোমুখি হয়েছেন?

না, ভাইপার / ভিম্পুলসের বিপরীতে যা বেশ কয়েকটি মোডে সমস্যা সৃষ্টি করছিল।


আমি এই ত্রুটিটি পাচ্ছি: প্রগন: পরিবর্তনশীল হিসাবে প্রতীকটির মানটি শূন্য: রাষ্ট্র কোথায় সংজ্ঞায়িত হয়?
justingordon

আপনি চেষ্টা করতে পারেনevil-emacs-state
কেনে মায়ার

2
আপনি এটি কোথায় রেখেছিলেন তা স্পষ্ট করে বলতে পারেন?
justingordon

1
এটি দুর্দান্ত, আমি ঠিক এটির জন্য চেয়েছিলাম। উপভোটস গ্যালোর!
jplindstrom


17

আমি এক মাস আগে এভিল ব্যবহার শুরু করেছি; এর আগে, আমি খুব বেশি সাফল্য ছাড়াই ভাইপার / ভিম্পুলস ব্যবহার করার চেষ্টা করেছি। সত্য কথা বলতে গেলে, ভিম্পুলস বেশ সুন্দর, তবে এটি বিভিন্ন মোডের সাথে ব্যবহার করা কিছুটা ঝামেলাজনক ছিল (যেমন সংকলন মোড যেখানে ভিপুলস সর্বদা পাগল হয়ে গেছে) কিছুটা মোডে ভি-ইম্যাক্স-কোনও কিছুর মধ্যে রেখেছিল cs

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

তা বাদে, আমি কেবল বাফারটি সাদৃশ্যটি দেখতে পেয়েছি যেমনটি আমি করতাম: বি <0-9> পরিবর্তে: বি-ট্যাব-এর পরে সম্পূর্ণ নাম বা: বিএন। তবে লক্ষ করুন যে Evভিল বিকাশকারীরা সদৃশ কার্যকারিতা হ্রাস করার চেষ্টা করে (কিছু ক্ষেত্রে), তার পরিবর্তে:! (শেল কমান্ড কার্যকর করতে), আপনার দেশীয় এম-! ব্যবহার করা উচিত।

আপনি যদি কিছু কাস্টম প্রাক্তন কমান্ড যুক্ত / পুনরায় সংজ্ঞায়িত করার তাগিদ খুঁজে পান তবে কেবল অশুভ-মানচিত্র খুলুন এবং এটি সম্পাদনা করুন (এটি ভিমে চেষ্টা করুন!)।

এভিল এখনও তরুণ কিন্তু প্রতিশ্রুতিবদ্ধ প্রকল্প এবং আমি সেই দিনের অপেক্ষায় রয়েছি যখন অফিশিয়াল ইমাস বিতরণে ভাইপার প্রতিস্থাপন করা হবে।


4
এটি কি বোঝাতে অনুমিত হয় যে ভিএম-এ কমান্ড যুক্ত / পুনরায় সংজ্ঞা দেওয়া সম্ভব নয়?
জন টাইরি

1
@ জনটিইরি ব্যবহারকারী সংজ্ঞায়িত কমান্ডগুলি ভিমে একটি উচ্চ-অক্ষরের চিঠি দিয়ে শুরু করা আবশ্যক, যেখানে সমস্ত অন্তর্নির্মিত কমান্ডগুলি একটি ছোট-ছোট অক্ষর দিয়ে শুরু হয়।
অস্টিন টেইলর

10

আমি যখন প্রস্থানটি থেকে বেরিয়ে আসি তখন বাফারটি সংরক্ষণ করতে চাই insert-mode: (সম্পাদিত: যখন এই বাফারটির সাথে সম্পর্কিত কোনও ফাইল নেই তখন সংরক্ষণ করতে বলবেন না, যেমন কোনও স্ক্র্যাচ বা ম্যাজিট বাফারে থাকে)

(defun my-save ()
  (if (buffer-file-name)
    (evil-save))
)

   (add-hook 'evil-insert-state-exit-hook 'my-save)

আরও সম্ভাবনার জন্য: http://wikemacs.org/index.php/Evil দেখুন

মন্তব্য উন্নতির জন্য স্বাগতম!


ধন্যবাদ। বিটিডাব্লু, আপনার লিঙ্কটি নষ্ট হয়ে গেছে।
আমোস

আপনাকে ও ধন্যবাদ. উইকেম্যাকস ফিরে আসবে। সাইটটি রক্ষণাবেক্ষণের অধীনে রয়েছে, আশা করি খুব বেশি দিন আর নয়।
এহভিন্স

9
  1. আমি দুষ্টু-লিডার ব্যবহার করি এবং "এমএক্স" প্রতিস্থাপন করতে ", এক্সএম" ব্যবহার করি, তাই আমি খুব কমই Alt কী টিপছি। রয়েছে general.el একাধিক নেতা কী সমর্থন করে।

  2. অশুভ-মিল , ট্যাগ জুটির মধ্যে ঝাঁপ দিতে "%" টিপুন।

  3. অশুভ-অদ্ভুত-মন্তব্যকারী , মন্তব্য করতে 9 বা লাইন "9, সিআই" টিপুন

  4. ESC কী ব্যবহার করা এড়িয়ে চলুন, আপনি পরিবর্তে "kj" টিপতে পারেন ।

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


0

ইমাস পাশ থেকে আসা, আমি এম- কে খুব পছন্দ করি। যেতে-সংজ্ঞা হতে, তবে যে ফাংশনটি চলছে তা M-.মোডগুলিতে পৃথক। আমি এটি নিয়মিত উপায়ে ওভাররাইড করতে পারি (define-key evil-normal-state-map (kbd "M-.") 'foo)যেখানে fooবর্তমান প্রধান মোডটি পরীক্ষা করে উপযুক্ত ফাংশন চালায়, তবে এটির জন্য প্রচুর হার্ডকোডিং লাগবে বলে মনে হচ্ছে। আরও সাধারণ সমাধান হ'ল:

(defun evil-emacs-key-binding (key)
  (evil-execute-in-emacs-state)
  (key-binding key))

(defmacro evil-revert-key-binding (state-map key)
  `(define-key ,state-map ,key (lambda ()
                                 (interactive)
                                 (call-interactively
                                  (evil-emacs-key-binding ,key)))))

(eval-after-load "evil-autoloads"
  '(add-hook 'evil-after-load-hook
        (lambda ()
          (evil-revert-key-binding evil-normal-state-map (kbd "M-."))
          ;; and so on
        )))

এগুলি ছাড়াও, আমি প্লাগইনগুলিকে মন্দ-আশেপাশে পছন্দ করি (যদিও আমি মনে করি স্মার্টপ্যারেনগুলি আরও সম্পূর্ণ সমাধান) এবং দুষ্ট-নেতা

আমি জে.কে.কে ম্যাপিংয়ের জন্য ইস্কে ম্যাপ করতে কী-কর্ড ব্যবহার করতাম যেমন আমি ভিএম-তে শিখতে পারি, তবে এটি কেজিকে জে.কে.র মতো আচরণ করার জন্য জোর দিয়েছিল, তাই পরিবর্তে আমি নিম্নলিখিতটি ব্যবহার করছি:

(defun evil-escape-if-next-char (trigger)
  "Watches the next letter. If `trigger', then switch to normal mode,
otherwise keep the previously inserted key and forward unpressed
key to `unread-command-events'."
  (self-insert-command 1)
  (let ((next-key (read-event)))
    (if (eq trigger next-key)
        (progn
          (delete-char -1)
          (evil-normal-state))
      (setq unread-command-events (cons next-key unread-command-events)))))

(defun evil-escape-if-next-char-is-k (arg)
  (interactive "p")
  (if (= arg 1)
      (evil-escape-if-next-char ?k)
    (self-insert-command arg)))

(eval-after-load "evil-autoloads"
  '(add-hook 'evil-after-load-hook
             (lambda ()
               ;; … other stuff …
               (define-key evil-insert-state-map (kbd "j") 'evil-escape-if-next-char-is-k))))

আমি ব্যবহার করি (setq evil-move-cursor-back nil)যা খুব ভিমি নয় (যদিও আপনি নিজের ভিএমআরসিও এটি করতে পারেন) তবে সন্নিবেশ সরিয়ে বাইরে বের হওয়ার পরে আমি কার্সারটি কখনও অভ্যস্ত হইনি।

প্রাকটিক্যাল টিপ: evil-local-mode-hookঅলস লোডিং অশুভ-আশেপাশের মোডের মতো স্টাফগুলির জন্য ব্যবহার করুন, এটি এটিকে সরল অবস্থায় রাখতে সহায়তা করবে না evil-mode-hook। তাই আপনি যদি আপনার সাথে খারাপ এবং মন্দ-পারিপার্শ্বিক ইনস্টল প্যাকেজ ইনস্টল, আপনি এটি শুরু যখন আপনি কি থাকতে পারে M-x evil-modeকরে

(eval-after-load "evil-surround-autoloads"
  '(add-hook 'evil-local-mode-hook #'evil-surround-mode))

(অবশ্যই, যদি আপনি সর্বদা দুষ্টু-মোড চালনা করেন এবং সর্বদা অশুভ ইনস্টল থাকে তবে সেই অটোলোড স্টাফের দরকার নেই, তবে আমি আমার .emaks এটিকে সাধারণ হতে পছন্দ করি যে আমি এটি পুরানো ইম্যাক্সনযুক্ত মেশিনে ব্যবহার করতে পারি বা কোনও প্রকার ছাড়াই) ইলপা প্যাকেজ ইনস্টল করা আছে))

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