কেস-সংবেদনশীল ক্যোয়ারী-প্রতিস্থাপন কীভাবে সম্পাদন করবেন?


16

যখন আমি কি M-x query-replaceসব ঘটনার প্রতিস্থাপন vদ্বারা w, তাহলে এটি আরো ম্যাচ V(বড় হাতের V)। কিভাবে কেবল ছোট হাতের সন্ধান করতে ইমাসকে বাধ্য করা যায় v?


"কেস-সংবেদনশীল" হ'ল ডিফল্ট আচরণ, যেখানে অনুসন্ধানে কেসটি বিবেচনা করে না। আপনি যদি কেবল একটি মামলার সাথে মিল রাখতে চান তবে এটি আপনার "কেস-সংবেদনশীল" want (আমিও কিছু মিস করতে পারি, প্রয়োজনে
এডিটটি

@ টি.ভেরন আমি এখন নিশ্চিত, আপনি ঠিক বলেছেন।
নাম

উত্তর:


13
(customize-set-variable case-fold-search  nil)

অথবা আপনার নিজস্ব কমান্ডে সেই পরিবর্তনশীল (বিকল্প) বাঁধুন যা অন্যথায় কেবল একটি মোড়ক query-replace। এটির সুবিধা রয়েছে যে এটি ক্যোয়ারী-প্রতিস্থাপনের বাইরে সাধারণ ব্যবহারের জন্য পরিবর্তনশীল মান পরিবর্তন করে না doesn't

পরিবর্তনশীলও দেখুন case-replace, যা প্রতিস্থাপন পাঠ্যের ক্ষেত্রে কেস নিয়ন্ত্রণ করে।

C-h f query-replaceউদাহরণস্বরূপ, যেখানে এটি বলা হয়েছে তাও দেখুন See

মিল যদি case-fold-searchশূন্য থাকে এবং FROM-STRING তে কোনও বড় হাতের অক্ষর না থাকে তবে ম্যাচটি ক্ষেত্রে স্বতন্ত্র । প্রতিস্থাপনটি পুরানো পাঠ্যের কেস প্যাটার্নটি নতুন পাঠ্যে স্থানান্তর করে, যদি case-replaceএবং case-fold-searchশূন্য থাকে এবং FROM-STRING এর বড় হাতের অক্ষর না থাকে

নীচের মন্তব্যগুলি এবং ইমাকস বাগ # 20687 দেখুন , যেখানে perform-replaceআপনি কেস ফোল্ডিংয়ের সময় টগল করতে দিতে কীভাবে প্যাচ করতে পারেন তা দেখান query-replace


এটিও নোট করুন যে perform-replaceবাঁধাগুলির জন্য বিদ্যমান কোডটি case-fold-searchএই পদ্ধতিতে (যে চলকগুলির উপর নির্ভর করে তা নোট করুন):

(case-fold-search  (if (and case-fold-search search-upper-case)
                       (isearch-no-upper-case-p from-string regexp-flag)
                     case-fold-search))

বাঁধাই ব্যবহারের case-fold-searchসময় আমরা যেমন করতে পারি তেমন উড়তে পরিবর্তন করা উচিত । তবে দুর্ভাগ্যক্রমে এর মোড মানচিত্র রয়েছে। isearchM-cquery-replace
দক্ষ মোদী

2
@ কৈশালমোদি: সাধারণত, এটির জন্য কী বাঁধাই করা যেমন সহজ হবে query-replace-map: (defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))এবং (define-key query-replace-map "C" 'toggle-case)। তবে সেই মানচিত্রে কীগুলি পরিচালনা করা কঠোর কোডে রয়েছে perform-replace। আপনি তা করতে চাইবেন M-x report-emacs-bug, পেতে perform-replaceআরো সবিস্তার হতে কোড, তাই কি মানচিত্রে যোগ করা যেতে পারে। এটির কমপক্ষে একটি ফ্যালব্যাক ক্লজ থাকা উচিত যা কেবলমাত্র সিএমডি-কে কী দিয়ে আবদ্ধ করে।
ড্র হয়েছে

ধন্যবাদ! আমি কেন query-replace-mapআগে পাইনি তা নিশ্চিত নয় ।
কুশল মোদী

1
আমি এখন এই বাগ রিপোর্টটি দাখিল করেছি (# 20687 )। সমাধানটি এই বাগের প্রতিবেদনে রয়েছে: কেবলমাত্র perform-replaceএকটি অতিরিক্ত condধারা যুক্ত করতে সংশোধন করুন যা আপনার দ্বারা সংজ্ঞায়িত কীটি ডেকে আনে query-replace-map। নতুন ধারাটি ধরা-সমস্ত tধারাটির ঠিক আগে রাখুন । এই নতুন দফা হল: (def (call-interactively def))। সহজ হতে পারে না।
ড্র হয়েছে

(customize-set-variable case-fold-search nil)ত্রুটি দেয় customize-set-variable: Attempt to set a constant symbol: nil। এছাড়াও আমি উভয় চেষ্টা (setq case-fold-search nil)এবং (setq case-replace nil)কিন্তু ক্যোয়ারী এখনও বড় হাতের ভি মেলে
নাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.