ইম্যাক্সে বর্তমান বাফারের ফাইল নাম কীভাবে পাবেন?


19

আমি ভিমকে মিস করি এমন একটি প্রধান বৈশিষ্ট্য হ'ল এটি সর্বদা বর্তমান ফাইলের ফাইলের নাম %বাফারে সংরক্ষণ করে ( আরও তথ্য )। এটি সহজেই কমান্ডগুলি চালু করার অনুমতি দেয়:

;; compile current file
:! gcc %
;; source current file (useful when I'm editing .vimrc
:source %
;; get the size of current file
:! du -sh %
;; etc, etc...

আমার অনুরূপ কার্যকারিতা থাকতে হবে emacs(সংস্করণ 24, যদি এতে কোনও পার্থক্য হয়), বর্তমান বাফারে খোলা ফাইলটির নাম সন্নিবেশ করার একটি সহজ উপায় আছে।

আমি কী করতে চাই তার উদাহরণ

আমি যখন কিছু শর্টকাটের প্রয়োজনীয়তা অনুভব করি তখন আরও ভাল ব্যাখ্যা করার জন্য আমি কিছু বেসিক ব্যবহারের ক্ষেত্রে বর্ণনা করি

  1. M-x compileসংকলন : আমি যখন ইমাস প্রবেশ করি তখন আমাকে একটি কমপাইল কমান্ড জিজ্ঞেস করে। আমি gcc (current-buffer)সহজে প্রবেশ করতে চাই ।

  2. লোড-ফাইল: আমি যখন আমার .emacs ফাইল সম্পাদনা করছি, পরিবর্তনগুলি পরীক্ষা করতে আমি এখনই এটি লোড করতে চাই। আমি যেভাবে এটি করি তা হ'ল M-x load-fileএবং তারপরে আমি সর্বদা নামটি বানান করি . e m a c s। আমি একটি শর্টকাট চাই

  3. বাহ্যিক প্রক্রিয়াগুলি চালু করুন: আমি du -shউদাহরণ হিসাবে দিয়েছিলাম , কেবলমাত্র তা বোঝানোর জন্য যে আমি শেল কমান্ডগুলি কার্যকর করার সাথে সাথে শর্টকাটটিও উপস্থিত থাকতে চাই withM-!

এতক্ষণ যা পেলাম

  • এই প্রশ্নটি এখানে U&L এ। প্রদত্ত উত্তরগুলি মূলত বাফারের ফাইলের নাম কোথায় পাওয়া যায় তা দেখানো হচ্ছে যাতে কেউ এটিকে হত্যা-রিংয়ে যুক্ত করতে পারে। এটি ঠিক আমি যা খুঁজছি তা নয়, আমি ফাইলের নামটি ব্যবহার করতে চাইবার আগে ম্যানুয়ালি মেরে ফেলতে চাই না। (এছাড়াও উভয় উত্তরে বর্ণিত সমাধানগুলি আমার ইম্যাকগুলিতে সহজেই কাজ করবে বলে মনে হয় না এবং এগুলি কিছুটা ব্যথা করে তোলে এমন অতিরিক্ত কীস্ট্রোকের প্রয়োজন হয়)।

সম্পাদনা : কিছুটা অপ্রাসঙ্গিক, আমি এই সমাধানগুলি কেন কাজ করে না তা জানতে পেরেছিলাম। আমি আইডিও সক্ষম করেছি, আরও খারাপ বা খারাপ জন্য।

  • (current-buffer)ফাংশন ম্যানুয়াল বর্ণিত বর্তমান বাফারে ফাইলের নাম আসতে না, কিন্তু কোথাও না উদাহরণ আমি উপরে দিয়েছেন, আমি elisp কোড মূল্যায়নের করছি। একটি (মিনি) বাফারে এই ফাংশনটির মূল্যায়নের ফলাফল andোকানোর এবং এইভাবে একটি শর্টকাটে বাঁধাই করার কোনও উপায় আছে?

আমি কি এইভাবে ভাবতে ভুল করছি?

আমি ভিম ব্যবহার করার কয়েক বছর পরে বর্তমানে ইম্যাকগুলি ব্যবহার করতে শিখছি (এটি আসলে কয়েক মাস হয়ে গেছে)। আমি প্রাক-ইম-ইন-এ-ভিম-ওয়ে ট্র্যাপ ব্যবহারের পূর্বাভাস এড়াতে চাই । আপনি যদি মনে করেন যে আমি যা চাইছি তা খুব ইম্যাক্স-ওয়াই নয় এবং এটি করার আরও ভাল (ক্লিনার?) উপায় থাকা উচিত, দয়া করে আপনার উত্তরে এটি উল্লেখ করুন।


ফাইলের নাম সম্পর্কে .emacs এ, (global-set-key (kbd "C-i") buffer-file-name)আপনি এটি Ctrl + I করতে চাইলে রাখুন। .Emacs সম্পর্কে, M-x load-file RETআপনি যা চান তা করে; আপনার কিছু লেখার দরকার নেই।
ইমানুয়েল বার্গ

2
এই কর্মপ্রবাহটি ইম্যাক্সের সাথে খুব ভাল জাল করে না, কারণ উইন্ডোর নীচের লাইনের সমস্ত প্রম্পটগুলি ইমাসে বাফারে থাকে (যাকে মিনিবিফার বলা হয়)। আপনি যদি (buffer-file-name)মিনিবাসে টাইপ করার সময় দৌড়াতে থাকেন তবে আপনি পাবেন nil, কারণ (current-buffer)এটি মিনিবাফার। আপনি মিনিবাফারে থাকাকালীন বাফারগুলিও স্যুইচ করতে পারেন, সুতরাং বর্তমান বাফারটি আপনি যে সময়টি বাফারকে ইমফ্যাকস দেখেন ততক্ষণে আপনি কী মনে করেন তা ট্র্যাক করা মুশকিল।
গিলস 'অশুভ হওয়া বন্ধ করুন'

উত্তর:


11

আপনি আপনার .emacs এর নীচে যেমন একটি ফাংশন রাখতে পারেন এবং এটি আপনার পছন্দ মতো কোনও কীতে আবদ্ধ করতে পারেন।

(defun insert-file-name ()
  "Insert the full path file name into the current buffer."
  (interactive)
  (insert (buffer-file-name (window-buffer (minibuffer-selected-window)))))

আরো দেখুন এই প্রশ্নের , এটা অনুরূপ বলে মনে হয়।


4

@ ইজিবের উত্তরের একটি সামান্য বৈকল্পিকটি হ'ল আপনার মারার রিংটির পাথটি আপনার বাফারে রাখার পরিবর্তে অনুলিপি করুন (কেবল ফাইলগুলি পড়ার জন্য দরকারী):

(defun filename ()   
    "Copy the full path of the current buffer."  
    (interactive)  
    (kill-new (buffer-file-name (window-buffer (minibuffer-selected-window)))))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.