সক্রিয় এম- পরিণত! এম- এবং (এ'কা ইমটাস সমেত Ctrl-Z বাশ করার সমতুল্য)


14

সময়ে সময়ে আমি M-! some_commandকেবল এটি দেখতে পাই যে কমান্ডটি আমার প্রত্যাশার চেয়ে বেশি সময় চলে এবং আমার ইম্যাকগুলি দীর্ঘ সেকেন্ডের জন্য হিমায়িত করে রাখে। তাই আমি আমার হিমায়িত ইমাকগুলিকে লক্ষ্য করি এবং নিজেকে ব্যবহার না করার জন্য নিজেকে লাথি মারি এবং পরের বার M-& some_commandব্যবহার করার প্রতিশ্রুতি দিচ্ছি M-&। তবে M-!কয়েক দশক ধরে আমার পেশীর স্মৃতিতে রয়েছে… এবং অবশ্যই আছে Ctrl-G, তবে এমন কিছু ঘটনা রয়েছে যখন কমান্ড ভেঙে আবার চালানো ভাল নয় (সম্ভাবনাগুলি এটি ভেঙে যেতে পারে, দুর্ঘটনাগুলি পুনরায় চালানো ব্যয়বহুল হবে))।

শেল কনসোলের অনুরূপ ভুল সংশোধন করা তুচ্ছ Ctrl-Z, bgএবং পটভূমিতে কাজ চলছে।

ইমাসে কিছু অনুরূপ কৌশল রয়েছে কি - বর্তমানে চলমান ফরগ্রাউন্ড (সিঙ্ক্রোনাস) কমান্ডকে ব্যাকগ্রাউন্ডাইজড (অ্যাসিনক্রোনাস) একে পরিণত করার উপায়?

নোট: ক্ষেত্রে এটি অসম্ভব ডিফল্ট M-! , আমি কিভাবে নতুন করে বাঁধানো করা সাজেশনের ব্যপারে উদার M-!অন্য কিছু (এই কৌতুক ছাড়া বৈশিষ্ট্যগুলি সমতুল্য হবে) মধ্যে।


2
আপনি জানতে আগ্রহী হতে পারেন যে &কোনও নিয়মিত shell-command( M-!) এর শেষে কেবল একটি যোগ করা এটি অযৌক্তিক করে তুলবে। অবশ্যই কোনও কমান্ড চালানোর আগে আপনাকে এটি করতে হবে তবে কমপক্ষে আপনি একই কী-বাইন্ডিং ব্যবহার করতে পারেন।
আনি

4
আপনি সর্বদা কেবল পুনর্নির্মাণ করতে M-!পারেন async-shell-command। :-) মনে হয় একমাত্র জিনিসটি হারাতে ইকো অঞ্চলে আউটপুট পাওয়া যথেষ্ট সংক্ষিপ্ত হলে is
গ্লুকাস

1
@ জ্ঞান, বাস্তবে, এটি সবই async-shell-commandঘটে। এটি স্ট্রিং এর &শেষে যুক্ত COMMANDকরে এবং কার্যকর করে shell-command
ম্যাথু পিজিয়াক

উত্তর:


2

ইমাসে কিছু অনুরূপ কৌশল রয়েছে কি - বর্তমানে চলমান ফরগ্রাউন্ড (সিঙ্ক্রোনাস) কমান্ডকে ব্যাকগ্রাউন্ডাইজড (অ্যাসিনক্রোনাস) একে পরিণত করার উপায়?

আমি সন্দেহ করি যে এরূপ কোনও কৌশল নেই। সমস্যাটি হচ্ছে সিঙ্ক্রোনাস শেল কমান্ড (যা সত্যই call-process-region) ইমাস ইভেন্ট ইভেন্ট লুপটিকে অবরুদ্ধ করে। এটিকে ভেঙে ফেলার একমাত্র উপায় হ'ল ইউএসআর 1 বা ইউএসআর 2 সিগন্যালের সাহায্যে প্রক্রিয়াটিকে হত্যা করা বা করা C-g। (অন্য উপায় থাকতে পারে, তবে আমি এটি করি)।

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


আপনি যা করতে পারেন তা কেবল কীগুলি অদলবদল করা:

(global-set-key (kbd "M-!") #'async-shell-command)
(global-set-key (kbd "M-&") #'shell-command)

রিবন্ডিং এম-! async-শেল-কমান্ড আংশিক বোধ তৈরি করে, কিন্তু: (1) আমি এম -1 এম- সম্পর্কে নিশ্চিত নই! আচরণ (কমান্ড আউটপুট থেকে বাফার) - সহজ দ্রুত ক্ষেত্রে কাজ করে তবে কি যদি কমান্ডটি ধীর হয় এবং আমি sth টাইপ করি? (২) অনেক ক্ষেত্রে আমি ফ্রিজ পছন্দ করি যতক্ষণ না কমান্ডটি আচরণ সমাপ্ত না করে যতক্ষণ না এটি স্পষ্ট সমাপ্তি ইঙ্গিত দেয় (কিছু কমান্ডের কোনও আউটপুট থাকে না ...) সুতরাং সুস্পষ্ট কীস্ট্রোকটি "ব্যাকগ্রাউন্ডে রেখে দিন" ভাল হবে (3) অ্যাসিঙ্ক সেই অ্যাসিঙ্ক বাফারগুলিকে ছেড়ে দেয় যা অবশ্যই আবশ্যক ফসল কাটা
মেক্ক

আমি ভাবছি যে অ্যাসিঙ্ক-শেল-কমান্ডের চারপাশে কিছু মোড়ক লিখতে পারে কিনা (এমন একটি ফাংশন যা অ্যাসিঙ্ক-শেল-কমান্ড উত্সাহিত করবে, তারপরে এটি সমাপ্তির জন্য অপেক্ষা করবে, কমান্ড বাতিল করে Ctrl-G তে প্রতিক্রিয়া দেখিয়ে এবং কিছু কী-স্ট্রোক রেখে এটি চলছে কিন্তু আর অপেক্ষা করছে না, এবং আউটপুট খালি বা সংক্ষিপ্ত হলে একবারে Async বাফারটি কাটুন )। আমি কীভাবে সেই অপেক্ষার অংশটি করব তা নিশ্চিত নই ...
মেক্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.