অগ্রগতি মোডে চিহ্ন হিসাবে শব্দ হিসাবে আচরণ করুন


12

ইমাসে অনেকগুলি কমান্ড রয়েছে যা "শব্দ" -র ক্ষেত্রে প্রযোজ্য। উদাহরণ অন্তর্ভুক্ত forward-word, kill-word, upcase-word, mark-word, transpose-words, ইত্যাদি "WORD" এর সংজ্ঞা কমান্ড মধ্যে একটু পরিবর্তন হওয়ার সম্ভাবনা রয়েছে বলে মনে হয়। উদাহরণস্বরূপ, forward-wordএকটি শব্দের মধ্যে একটি আন্ডারস্কোর এ থামবে (উদাঃ foo_bar) তবে mark-wordআন্ডারস্কোর এ থামবে না।

আমি যখন প্রগ মোডে থাকি তখন "শব্দের" সংজ্ঞাটি পরিবর্তন করা সম্ভব হয় যাতে ইমাসরা বর্তমান ভাষার বাক্য গঠনের জন্য উপযুক্ত শব্দ সীমাটি ব্যবহার করতে পারে?

আমি যখন থাকি তখন আমি আন্ডারস্কোরগুলি এড়িয়ে যেতে c-modeচাই forward-wordএবং আমি যখন থাকি আমি হাইফেন এবং আন্ডারস্কোর ইত্যাদি উভয়ই এড়িয়ে যেতে lisp-modeচাই forward-wordetc.

উত্তর:


4

ইমাক্সের ইতিমধ্যে " বর্তমান ভাষার সিনট্যাক্সের জন্য উপযুক্ত শব্দ সীমানা " ব্যবহার করা উচিত । যদি তা না হয় তবে সেই ভাষার জন্য প্রধান মোডের জন্য একটি বাগ ফাইল করুন।

তবে সম্ভবত আপনি শব্দটির অর্থ বোঝাতে চাইছেন না । হতে পারে আপনার অর্থ প্রতীক বাক্য গঠন, শব্দ বাক্য গঠন নয় ax ইমাক্স দুটি পৃথক করে।

প্রতীক সিনট্যাক্সের জন্য, শব্দ কমান্ড নয়, প্রতীক কমান্ডগুলি ব্যবহার করুন: forward-symbolইত্যাদি আপনার বর্ণনা থেকে, আপনি যা চান তা এটিই।

আপনি যদি মনে করেন যে আপনি সত্যই একটি চিহ্নে একটি শব্দ ফাংশন ব্যবহার করতে চান, আপনি নির্দিষ্ট অক্ষরের বাক্য বিন্যাসকে চিহ্ন-উপাদান উপাদান সিনট্যাক্সের পরিবর্তে শব্দ-উপাদান বিন্যাসে পরিবর্তন করতে পারেন। তবে সাধারণত আপনি যা করতে চান এটি তা নয় এবং এটি করার দরকার নেই।

চরিত্রের সিনট্যাক্স সম্পর্কে তথ্যের জন্য এলিসপ ম্যানুয়ালটি দেখুন। এবং প্রতীকগুলিতে পরিচালিত কমান্ড এবং অন্যান্য ক্রিয়াকলাপগুলির জন্য ইমাস ম্যানুয়াল এবং এলিস্প ম্যানুয়াল দেখুন (লিস্প প্রতীক নয়, তবে যে কোনও ভাষায় প্রতীক সিনট্যাক্স সহ পাঠ্য)।

এবং মনে রাখবেন যে সেক্সপ্সে অপারেশনগুলি প্রায়শই চিহ্নগুলিতে অভিনয় করার জন্যও কার্যকর: C-M-f( forward-sexp), C-M-t( transpose-sexps) ইত্যাদি acting


C-M-fআবদ্ধ forward-sexpএবং আপনার বর্ণনা মত কিছুই আচরণ করে না। আপনি ঠিক বলেছেন যে আমি যা চাই তা প্রতীকগুলি দিয়ে নেভিগেট করা, তবে আমি সেই বিকল্পটি দেখতে পাচ্ছি না।
নিসপিও

@ স্প্যানিও forward sexpমূলত forward-symbolবেশিরভাগ সময় মেলা বন্ধনীগুলির যোগ করার অতিরিক্ত যুক্ততা সহকারে । আপনার এটি একটি সুযোগ দেওয়া উচিত।
মালবারবা

@ মালবারবা আমি দৃ strongly়ভাবে একমত নই যে এটির forward-sexpকাছাকাছি forward-symbol। প্রারম্ভিকদের জন্য, এটি বিভ্রান্তিকরভাবে আপনাকে পুরো ফাংশনগুলিতে ঝাঁপিয়ে পড়তে পারে, আপনি যেখান থেকে শুরু করেছিলেন সেখান থেকে কয়েকশ লাইন অবতরণ করে। এটি আর্গুমেন্টের তালিকা ইত্যাদির উপরও লাফ দেয় এবং এটি ব্যবহার করে দেখুন: নীচের লিস্প কোডটি দিয়ে (global-set-key [remap list-buffers] 'ibuffer)আপনার কার্সারটিকে শব্দের মাঝখানে রাখুন remapএবং forward-sexpকয়েকবার চালান । এটি সমাপ্তিতে পৌঁছালে এটি একটি ত্রুটি উত্থাপন করে ]। না ধন্যবাদ.
নিস্পিও

@নিস্পিও আমি সর্বদা সেক্সপ এবং শব্দ নেভিগেশনের সংমিশ্রণ ব্যবহার করি। উভয়ের বহুমুখিতা থাকা অবস্থায় আমি এই সমস্যাগুলির কোনওটি এড়াতে পারি। তবে এটি সবই পছন্দসই বিষয়। ;-) আপনি যদি জানেন যে আপনি কখনই শব্দ নেভিগেশন মিস করবেন না, superword-modeহতে পারে আপনার লোক।
মালাবরবা

দুঃখিত, আমার পরামর্শ দেওয়া উচিত ছিল না C-M-fএবং C-M-tপ্রতীকগুলিতে কাজ করা উচিত (তারা সেক্সপসে অভিনয় করে)। আমি এই ইমপ্রেশনটি সংশোধন করতে সম্পাদনা করব। তবে আপনি forward-symbolযদি বিশেষভাবে দরকারী মনে করেন তবে আপনি অবশ্যই আপনার পছন্দ মতো যে কীটি আবদ্ধ করতে পারেন। নেই transpose-symbols, তবে আপনি যদি এটি দরকারী মনে করেন তবে আপনি একটি লিখতে পারেন।
ড্র করুন

11

একবার দেখুন superword-modeএবং subword-mode। সুপারওয়ার্ড একটি বাউন্ডারের পরিবর্তে শব্দের অংশ হিসাবে আন্ডারস্কোর বিবেচনা করে, সুতরাং foo_bar এটি একটি শব্দ হিসাবে বিবেচিত হবে
সাবওয়ার্ড বিপরীতে কিন্তু উট কেস এর জন্য কাজ করে, তাই fooBarএকের পরিবর্তে দুটি শব্দ হিসাবে বিবেচিত হয়।

আপনি যে আচরণটি চান তা cc-modeব্যবহারের জন্য বলে মনে হচ্ছে superword-mode

(add-hook 'c-mode-common-hook 'superword-mode)

আমি উত্সটি পড়ার জন্য সুপারিশ করব subword-mode, এমনকি যদি এই দুটি মোড আপনি যা চান ঠিক তেমন না করে তবে তাদের শনাক্তকরণ শব্দের আচরণটি কীভাবে পরিবর্তন করা যায় তা আপনাকে দেখানো উচিত।

Emacsredux , এবং এরগোম্যাকের উপর দীর্ঘ আলোচনা ।


superword-modeনাটকটি দিয়ে pareditকী সুন্দর করা সম্ভব ? উদাহরণস্বরূপ, সক্ষম হয়ে paredit-forward-kill-wordগেলে পুরো শব্দটি মুছে ফেলা হয় না (আন্ডারস্কোরযুক্ত) superword-mode
রেনান রানেলি

এটি একটি শব্দের সংজ্ঞা পরিবর্তন করছে এবং pareditএটি শ্রদ্ধা করছে, তাই আমি মনে করি এটি এটি যা করা হচ্ছে তা করছে।
ডিজিটেড

বিষয়টি হল যে পারদিত সেটিকে সম্মান দিচ্ছেন নাparedit-forward-kill-wordদ্বারা নির্ধারিত একই শব্দটিকে হত্যা করে না superword-mode
রেনান রেনেেলি

ওহ আমি ভুল লিখছি। হুম। কেবল একবার দেখুন paredit-forward-kill-wordএবং দেখে মনে হচ্ছে এটি নিজের পার্সিং করছে। সুতরাং এটি আউট বদল করতে সক্ষম হতে পারে, কিন্তু সম্ভবত না।
dgised

3

যদি আমি আপনার প্রশ্নটি বুঝতে পারি তবে আপনি ভাষা সিনট্যাক্স টেবিলটি সংশোধন করতে পারেন, যেমন সি ++ এর জন্য:

(modify-syntax-entry ?_ "w" c++-mode-syntax-table)

M-x apropos তারপরে সিনট্যাক্স-টেবিলটি সন্ধান করা আপনাকেও সহায়তা করবে।

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