ইম্যাক্সে কার্সারের অধীনে বর্তমান শব্দটি কীভাবে প্রতিস্থাপন করা যায়


25

আমি ইমাসে কার্সারের অধীনে বর্তমান শব্দটি কীভাবে প্রতিস্থাপন করব?

আমি জানি যে আমি কোয়েরি-প্রতিস্থাপন বা প্রতিস্থাপন-স্ট্রিং ব্যবহার করতে পারি তবে প্রতিবার আমি যখন এটি করি তখন প্রতিস্থাপনের জন্য পুরো স্ট্রিংটি টাইপ করতে হয়, এটি কেবল বিরক্তিকর।

ভিআই এর সমমানের কমান্ড কিওয়ার্ড রয়েছে এবং আমি প্রতিস্থাপনের জন্য শব্দটি কার্সারের নিচে টানতে একটি শর্টকাট ব্যবহার করতে পারি:

nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#

ইমাকস দিয়ে এটি কীভাবে করবেন কেউ জানেন?


উত্তর:


2

ব্যবহারের কপি-পেস্ট করুন: M-d C-_ M-x replace-string RET C-y( kill-word, undo, replace-string, yank)। যদি আপনি ইতিমধ্যে প্রতিস্থাপন আরম্ভ করে থাকেন, আপনি স্বাভাবিক উইন্ডোটির সাথে কপি-পেস্ট বা সুইচিং কমান্ড বাফার করতে মূল বাফার ফিরে যেতে পারেন: M-x replace-string RET … C-x o M-d C-_ C-x o C-y। আপনি একাধিক শব্দ প্রতিস্থাপন করতে M-d(যেমন ESC 4 2 M-d) উপর একটি উপসর্গ যুক্তি ব্যবহার করতে পারেন ।

আপনি যদি কার্সারে এক বা একাধিক শব্দের প্রতিস্থাপনের পরিকল্পনা করে থাকেন তবে পরিবর্তে আপনি ইনক্রিমেন্টাল অনুসন্ধান ( C-s) C-wথেকে শুরু করতে পারেন , কার্সারের নীচে শব্দটি সন্ধান করতে ব্যবহার করতে পারেন , তারপরে M-%স্যুইচ করতে টিপুন replace-string


26

বর্ধিত অনুসন্ধানে এই বৈশিষ্ট্য রয়েছে, তবে প্রতিস্থাপনের কার্যগুলি তা করে না। সৌভাগ্যবসত, ক্রমবর্ধমান অনুসন্ধান করে একবার আপনি একটি অনুসন্ধান শব্দ নির্বাচন করেছেন মোড প্রতিস্থাপন সুইচ করতে একটি উপায় আছে। তাই:

  • C-sবর্ধিত অনুসন্ধান মোডে স্যুইচ করতে টিপুন
  • C-wসন্ধান বাফারে বর্তমান শব্দটি ইয়াঙ্ক টিপুন আপনি একাধিক শব্দ সংযোজন করতে এটি C-M-yটিপতে রাখতে পারেন, এবং আপনি পৃথক অক্ষরগুলি ইয়াঙ্ক করতে এবং C-yপুরো লাইনগুলি ইয়েঙ্ক করতেও পারেন
  • M-%আপনি ইতিমধ্যে নির্মিত অনুসন্ধান বাফারটি ব্যবহার করে মোড প্রতিস্থাপন করতে স্যুইচ করতে টিপুন

আপনি সম্ভবত M-%সাধারণত ব্যবহার থেকে জানেন , এটি একটি ক্যোয়ারী প্রতিস্থাপন মোড যেখানে এটি আপনাকে প্রতিটি ম্যাচের সাথে কী করার জন্য অনুরোধ করে। আপনি যদি কেবল তাদের সমস্তটি প্রতিস্থাপন করতে চান !তবে প্রথম ম্যাচে হিট করুন


9
;; query-replace current word
(defun qrc (replace-str)
   (interactive "sDo query-replace current word with: ")
   (forward-word)
   (let ((end (point)))
      (backward-word)
      (kill-ring-save (point) end)
      (query-replace (current-kill 0) replace-str) ))

1
এই সমাধানটি দুর্দান্তভাবে কাজ করে এবং কীভাবে এটি ম্যানুয়ালি করা যায় তার চেয়ে অনেক বেশি কার্যকর is আমি অনুলিপি করে কপি-পেস্ট নিয়ে বিরক্ত হতে পারি না।
পল কোকোলি

2

আমি ইম্যাক্সে একেবারে নতুন তবে আমি নিম্নলিখিতটি সুপারিশ করতে পারি:

M-b       to move backward over a word
M-d       to kill up to the end of the word

এখন আপনি একটি নতুন শব্দ লিখতে পারেন। প্রায় cwভিএম এর মতো কাজ করে


1

আপনি যদি কার্সারের নীচে M-S-%কেবল M-nশব্দ পূরণ করে অনুসন্ধান-এবং-প্রতিস্থাপনে যান তবে আবার এটি টিপলে এটি "প্রতীক ডিলিমিটার" এ মোড়ানো থাকে।


1

ভিম থেকে ইমাক্সে স্থানান্তরিত হবার পর থেকে আমি একই জিনিসটি সংগ্রাম করে যাচ্ছিলাম।

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

এটি অঞ্চলটি সক্রিয় (বা ভিম শব্দে ভিজ্যুয়াল নির্বাচন) এর সাথেও কাজ করে এবং এটি abc-def-hij এর মতো শব্দ প্রতিস্থাপন করতে বেশ কার্যকর হতে পারে:

; replace current word or selection using vim style for evil mode
(defun evil-replace-word-selection()
(interactive)
(if (use-region-p)
    (let (
            (selection (buffer-substring-no-properties (region-beginning) (region-end))))
        (if (= (length selection) 0)
        (message "empty string")
        (evil-ex (concat "'<,'>s/" selection "/"))
        ))
    (evil-ex (concat "%s/" (thing-at-point 'word) "/"))))

তারপরে আপনার init.el এ একই কী বাঁধাইয়ের সংজ্ঞা দিন:

(global-set-key (kbd "\C-co") 'evil-replace-word-selection)

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


0

এটি ইতিমধ্যে উত্তর দেওয়া হয়েছে এবং আমি মন্তব্য করতে পারি না কারণ এখনও আমার যথেষ্ট খ্যাতি নেই। তবে আপনি যা খুঁজছেন তা ciwভিম।

ইমাসে আমি নিকটে এসেছি এই সংমিশ্রণটি:

M-b M-d

এটি শব্দের শুরুর দিকে ফিরে যায় কার্সার চালু আছে এবং তারপরে শব্দটি মুছে ফেলে।

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