`ফরোয়ার্ড-শব্দের উপর একটি শব্দের শুরুতে থামুন`


17

আমি প্রায়ই একাধিক আমন্ত্রণ ব্যবহার forward-wordএকটি একক দ্বারা অনুসরণ backward-wordএকটি লাইনে একটি শব্দ প্রারম্ভে বিন্দু সরানো। আমি অনুমান করি যে আমি কখনই forward-wordভিএম এর থেকে আলাদা তার সাথে অভ্যস্ত হইনি এবং কয়েক wবছর ধরে ইমাকস ব্যবহার করার পরেও আমি এই পার্থক্যে অভ্যস্ত হতে পারি না।

আমি কি এর পরিবর্তে কোনও ফাংশন ব্যবহার করতে পারি forward-wordযে শব্দের উপরে ঝাঁপ দেয় না তবে একটি শব্দের শুরুতেও থামে? বার্তা কার্যকর করার সাথে জড়িত না বলে সামনে এগিয়ে যাওয়ার সময় কী শব্দের শুরুতে যাওয়ার অন্যান্য কৌশল আছে forward-char?


আপনি (কোনও এক পর্যায়ে) আপনার নিজের ফরোয়ার্ড / পশ্চাদপদ শব্দ / অনুচ্ছেদ এবং সম্পর্কিত হত্যা-শব্দ ফাংশন লিখতে আগ্রহী হতে পারেন। নীচে আমি প্রতিদিনের ভিত্তিতে কিছু কাস্টম ফাংশনগুলির জন্য তিনটি লিঙ্ক ব্যবহার করি - আচরণটি আমি কয়েক বছরের ব্যবধানে ব্যবহৃত কিছু ওয়ার্ড প্রসেসরের সাথে ঘনিষ্ঠভাবে সাদৃশ্যপূর্ণ: stackoverflow.com/a/20456861/2112489 | stackoverflow.com/q/18675201/2112489 | superuser.com/a/685604/206164
আইনজীবি

উত্তর:


24

miscপ্যাকেজ (Emacs সঙ্গে জাহাজে) আছে বিল্ট-ইন ফাংশন forward-to-word, যা করে আমি যা মনে করি আপনি চাই:

forward-to-word is an interactive compiled Lisp function in `misc.el'.

It is bound to M-f.

(forward-to-word ARG)

Move forward until encountering the beginning of a word.
With argument, do this that many times.

এটি ব্যবহার করতে, প্রথমে (require 'misc)আপনার কনফিগার ফাইলটিতে যুক্ত করুন।


ধন্যবাদ, এটি দরকারী। দুর্ভাগ্যবশত, এই নেই এছাড়াও একটি শব্দ শেষে, যদিও থামাতে।
রেকাডো

1
সত্য, তবে উভয়ই ভিমে দেয় না w। আমি যতদূর দেখতে পাচ্ছি, প্রায় নিখুঁত ভিম-টু-ইমাস ম্যাপিং রয়েছে: w= forward-to-word; e= forward-word; b= backward-word; ge= backward-to-word। তবে আমি একজন বিশেষজ্ঞ ভিএম ব্যবহারকারী নই, তাই হয়ত আমি কিছু সূক্ষ্মতা অনুপস্থিত।
অবচিত

হেই, আপনি আসলেই ঠিক বলেছেন। আমি যখনই আমি তেজ আছি w, eআর bশুধু দূরে আবছা এবং আমি ঠিক কাছাকাছি সরাতে। রহস্যময়। wউভয় পয়েন্টে আমি অবশ্যই থামলাম! সুতরাং, আমি আপনার উত্তরটি গ্রহণ করব, কারণ এটি আমার প্রশ্নের সাথে পুরোপুরি ফিট করে :)
রেখাডো

4

আপনি নীচের ফাংশনটিকে M-fআবদ্ধ করতে এবং আসলটিতে আবদ্ধ করতে forward-wordপারেন M-F। এই ফাংশনটি কেবল এটি গ্রহণ করে argএবং এটি ফাংশনে প্রেরণ করে forward-word। সুতরাং সর্বজনীন যুক্তিগুলি মূল ফাংশনের মতোই সূক্ষ্মভাবে কাজ করবে।

(defun modi/forward-word-begin (arg)
  "Move forward a word and end up with the point being at the beginning of the
next word.  Move point forward ARG words (backward if ARG is negative).
If ARG is omitted or nil, move point forward one word."
  (interactive "p")
  (forward-word arg)
  (forward-word 1)
  (backward-word 1))

সতর্কতার কথা যদিও উপরের ফাংশনটি সর্বদা সঠিক কাজ না করে ; এটি ইতিমধ্যে যদি কোনও শব্দের শুরুতে পয়েন্টটি ইতিমধ্যে থাকে তবে তা নির্ভর করে।


এখানে উপরের প্রয়োগের আরেকটি উপায় যেখানে শব্দ সীমাটি বাক্য বিন্যাসের টেবিল অনুযায়ী নয় তবে কঠোরভাবে সাদা স্থান পৃথকীকরণের ক্ষেত্রে রয়েছে:

(defun modi/forward-word-begin (arg)
  "Move forward ARG (defaults to 1) number of words.
Here 'words' are defined as characters separated by whitespace."
  (interactive "p")
  (dotimes (_ arg)
    (forward-whitespace 1)))

এই ধারণার জন্য ক্রেডিট @ গ্লুকাসে যায় ।


1

নিখুঁত 'ফরোয়ার্ড / পশ্চাদপদ শব্দ' ফাংশনগুলির জন্য দীর্ঘ এবং বেদনাদায়ক অনুসন্ধানের পরে আমি নিম্নলিখিতগুলি পেয়েছি যার সাথে আমি এখন খুব খুশি:

(progn
  (defun boundary ()
    (and      (= (char-syntax (char-after))  ?w)
         (not (= (char-syntax (char-before)) ?w))))
  (defun my-forward-word ()
    (interactive) 
    (while (progn (forward-char)  (not (boundary)))))
  (defun my-backward-word ()
    (interactive) 
    (while (progn (backward-char) (not (boundary)))))
  (global-set-key [M-right] 'my-forward-word)
  (global-set-key [M-left]  'my-backward-word)
  )

0

আপনি হবে যদি রাজী ব্যবহার করতে evil, wস্বাভাবিক অবস্থায় আবদ্ধ হয় evil-forward-word-begin, যা তেজ-শৈলী কার্যকারিতা তোমার পরে হন।


আমি evilঅনেক আগে ব্যবহার করেছি তবে কিছুক্ষণ থেকেই আমি god-modeএর পরিবর্তে নিয়মিত ইমাক্স বাইন্ডিং ব্যবহার করি।
রেকাদো

0

আমি প্রায়শই ফরোয়ার্ড-শব্দের একাধিক অনুরোধগুলি ব্যবহার করি যার পরে একটি লাইনের শব্দের শুরুতে পয়েন্ট সরানোর জন্য একটি একক পশ্চাৎ শব্দ হয়।

আপনি উল্লেখ হিসাবে, কৌশলটি দুটি শব্দ এগিয়ে যেতে হয়, তারপরে একটি শব্দ পিছনে।

নিম্নলিখিতগুলির কৌশলটি করা উচিত এবং সাব-ওয়ার্ড মোডের মতো অন্যান্য মোডগুলিকে সম্মান করা উচিত।

(define-key global-map (kbd  "M-f")
  (lambda ()
    (interactive)
    (forward-word)
    (forward-word)
    (backward-word)))

এটি /emacs//a/4272/508 এর একটি প্রাথমিক সংস্করণ যা কিছু কেস কভার করে না, তবে বোঝা সহজ।

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