মিনি ফাইলের বর্তমান ফাইলের নাম রাখুন


12

কীভাবে আমি সক্রিয় ফাইল বাফারের ফাইলের নাম একটি কমান্ডের মধ্যে প্রবেশ করতে পারি?

আমি যখন কোনও আদেশের জন্য প্রার্থনা করি যেখানে একটি ফাইলের নাম প্রয়োজন হয়, আমি প্রায়শই একটি ফাইল বাফার থেকে এটি করি এবং মিনিবফারারে কমান্ডটি টাইপ করার সময় সেই ফাইলটির নাম চাই ।

আমি একটি অনুমানের সন্ধান করছি C-xযা আমি মিনিবাসে একটি কমান্ড লাইন গঠনের সময় টাইপ করতে পারি।

সুতরাং, বর্তমান বাফার নামের একটি ফাইল থাকলে Lorem Ipsum.txtআমি এটি টাইপ করি:

M-x grep RET 'foo' SPC C-x … RET

M-xgrepRETউপহার একটি minibuffer জন্য প্ররোচনা grepকমান্ড। প্রতিক্রিয়া হিসাবে, আমি রেজেক্স প্যাটার্ন আর্গুমেন্ট ( 'foo') টাইপ করেছি এবং ফাইলের নাম আর্গুমেন্ট ( C-x) .োকালাম । এই মিনিবাসটি শেষ হবে:

grep -nH -e 'foo' 'Lorem Ipsum.txt'

বিদ্যমান কমান্ডটি বর্তমান ফাইল বাফারের ফাইলটির নামটি কীভাবে পায়? এর ডিফল্ট কী বাঁধাই কি?


3
আমি অবাক হয়েছি কারও উল্লেখ নেই M-n। এটি সর্বত্র কাজ করে না, তবে অনেক জায়গায় কাজ করে। এছাড়াও, যেহেতু আপনি গ্রেপিং করছেন, আপনি সম্ভবত এলগ্রিপ এবং আরগ্রিপ পছন্দ করতে পারেন, যা কিছুটা আরও ইন্টারেক্টিভ, আমি মনে করি।
মালবারবা

উত্তর:


18

বিদ্যমান কমান্ডটি বর্তমান ফাইল বাফারের ফাইলটির নামটি কীভাবে পায়?

দুর্ভাগ্যক্রমে এর জন্য কোনও প্রস্তুত কমান্ড নেই, তবে আমরা নিম্নলিখিতটি তৈরি করতে পারি:

(defun name-of-the-file ()
  "Gets the name of the file the current buffer is based on."
  (interactive)
  (insert (buffer-file-name (window-buffer (minibuffer-selected-window)))))

জাদু হয় minibuffer-নির্বাচিত উইন্ডো ফাংশন; এটি মিনিবাসার সক্রিয় হওয়ার আগে শেষ বাফারটি বাছাই করে সঠিক কাজটি করে। অন্যথায় কেবল বাফার-ফাইল-নাম ব্যবহার করে আমাদের ফাইলের নাম মিনিবুফারে পাবেন না। মজার বিষয় হল, একই ফাংশনটি নিয়মিত বাফার বা মিনিবাসে ফাইলের নাম সন্নিবেশ করতে ব্যবহার করা যেতে পারে। কোন বিশেষ চিকিত্সার প্রয়োজন হয় না।

এর ডিফল্ট কী বাঁধাই কি?

কোনওটি নেই, তবে আপনি একটি সুবিধাজনক চয়ন করতে পারেন এবং নীচে এটি নির্ধারণ করতে পারেন:

(global-set-key (kbd "C-c f") 'name-of-the-file)

উপরের লিস্প কোড লাইনগুলি আপনার init.el ফাইলে রাখুন।

এটি বেশিরভাগ তুচ্ছ ঘটনাতে কাজ করে, তবে এই ফাংশনটি চালিত করার সময় আপনার সক্রিয় থাকা যে কোনও মোডের সাথে এটির কী বিরোধ হতে পারে তা অনুমান করা শক্ত।

বাফার যদি স্ক্র্যাচ বাফারের মতো কোনও বৈধ ফাইলের নাম ভিজিট না করে? তারপরে এই ত্রুটিটি প্রতিধ্বনি অঞ্চলে প্রদর্শিত হবে:

name-of-the-file: Wrong type argument: char-or-string-p, nil

শর্টকাট শুরু করার আগে একটি যথাযথ ফাইল নাম সহ একটি বৈধ বাফার বাছাই করা যেমন ত্রুটিগুলি এড়াতে পারে।

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


এটি কাজ করার জন্য আমার মনে হয় একজনকে অবশ্যই আবশ্যক enable-recursive-minibuffers
ডিয়েটার.ওহেলহেম

যদি কমান্ডটি কেবল (define-key minibuffer-local-map (kbd "C-c f") 'name-of-the-file)'. In addition to this useful function I also created the function মিনিবাসে ব্যবহার করার কথা মনে করা হয় তবে নীচের বাইন্ডিংটি পরিবর্তে নাম-অফ-অফ- C-c bবাফার ব্যবহার করা যেতে পারে যা আমি বর্তমান বাফারের নাম সন্নিবেশ করিয়েছি to
ডভ গ্রবগেল্ড

2

dired-xকীবোর্ড শর্টকাট ব্যবহার করার সময় C-x C-jআবদ্ধ dired-jump। সুতরাং আপনার ফাইল বাফার থেকে আপনি ডায়ার্ড ডায়ার্ড লাইনে শেষ হন এবং এর ফাইলের নামটি অনুলিপি করতে পারেন w। এবং তারপরে আপনি এটি মিনি বাফারে পেস্ট করতে সক্ষম।

ফাইলের নাম টাইপ করার জন্য আরেকটি সম্ভাবনা হ'ল স্ট্যান্ডার্ড ইম্যাক্স মিনি বাফার ফাইল সমাপ্তি। আপনার ফাইলের নামের প্রথম অক্ষর এবং তারপরে TAB টাইপ করুন।


1
আপনি কেবল w(কমান্ড dired-copy-filename-as-kill) ব্যবহার করে বর্তমান ডায়ার্ড লাইনে ফাইলটির নাম অনুলিপি করতে পারেন ।
ড্রিউ

-1

প্রশ্ন এটি করার জন্য একটি বিদ্যমান ইমাস কমান্ডের জন্য জিজ্ঞাসা করে।

আগেই উল্লেখ করেছি:

দুর্ভাগ্যক্রমে এটির জন্য প্রস্তুত কমান্ড নেই

যা এই প্রশ্নের উত্তর হতে দেখা যাচ্ছে।


আপনার ব্যবহারের কেসকে হ্রাস করার বিভিন্ন উপায় রয়েছে এবং অন্যরা বিসপোক কোডিংয়ের সমাধানের পরামর্শ দিয়েছিলেন, সুতরাং আমি মনে করি আপনার বক্তব্যটি সঠিক নয়। আপনি বিশেষত কোনও -ই-বক্স-অফ-ই- এমাক্সের পথে জিজ্ঞাসা করেননি !
ডিয়েটার.ভিলহেল্ম

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