जब मैं पहले से ही फ़ाइल का नाम पेस्ट कर सकता हूं, तो मुझे कैसे बाहर निकलना है?


14

मैं खुद को बर्ड मोड का उपयोग करने की कोशिश कर रहा हूं। कुछ बार यह अच्छा है, लेकिन अन्य समय यह बहुत बेवकूफ है। यहाँ मेरी सबसे बड़ी निराशा है।

मैंने पूर्ण फ़ाइल नामों के साथ कुछ लॉग पढ़ा, फिर मैं एक नाम की प्रतिलिपि बनाता हूं, उस फ़ाइल को खोलने का प्रयास करता हूं।

बिना घोड़े के ऐसा करने का तरीका: C-aC-yC-kRET

पक्षियों के साथ दो प्रमुख समस्याएं हैं:

  1. यदि मेरे पास संपूर्ण फ़ाइल नाम है, तो इनपुट करने का कोई तरीका नहीं है (मुझे पहले स्लैश को हटाना होगा, अन्यथा दबाने पर भी //मदद नहीं मिलेगी।

  2. मैं फ़ाइल नाम के मध्यवर्ती भागों को संपादित नहीं कर सकता, बाकी को असम्बद्ध छोड़ कर।

या कर सकता हूं?


2
आप शेयर करने के लिए वापस ड्रॉप कर सकते हैं find-fileके साथ C-x C-fऔर सामान्य रूप से में पेस्ट करें। लेकिन फिर, यह अधिक कीस्ट्रोक्स है। या यदि आप एक सुविधा को समृद्ध चाहते हैं तो आप हेल्म का उपयोग कर सकते हैं find-fileऔर फिर भी उस उपयोग के मामले को संतुष्ट कर सकते हैं।
Tu Do

1
आह, धन्यवाद, नहीं, मैं ऐसा नहीं करते हैं तो अक्सर है कि मैं दो अतिरिक्त कीस्ट्रोक्स के बारे में शिकायत होगी। यह वास्तव में अब के लिए मेरी जरूरतों का जवाब होगा। धन्यवाद!
wvxvw

@ क्या आपको नीचे दिए गए उत्तर के रूप में नीचे रखना चाहिए। मैंने C-x C-fकई बार फ़ॉलबैक को उपयोगी पाया है !
कौशल मोदी

जवाबों:


17

जबकि एक idoआदेश सक्रिय है ( ido-find-fileइस मामले में), तो आप के लिए वापस ड्रॉप कर सकते हैं गैर Ido समान आदेश के संस्करण ( find-fileइस मामले में) Ido-डिफ़ॉल्ट बाइंडिंग का उपयोग कर C-x C-fके लिए ido-fallback-command

सवाल का जवाब देने के लिए,

  • पहला C-x C-fफोन करेगा ido-find-file
  • दूसरा C-x C-fवापस गिर जाएगा find-file
  • तब आप कर सकते हैं C-a C-y C-k RETजैसा कि आप आमतौर पर एक कॉपी किए गए फ़ाइल पथ को मिनीबफ़र में डालने के लिए करते हैं।

नोट: में ido, के C-x C-f C-x C-fरूप में एक ही काम करेंगे C-x C-f C-f, यानी वापस करने के लिए गिर जाते हैं find-file

C-fido इन के बारे मेंido-mode , के C-fलिए बाध्य है ido-magic-forward-char। से ido.el,

(डिफ्यूड इडो-मैजिक-फॉरवर्ड-चार (arg)
  "उपयोगकर्ता इनपुट में आगे बढ़ें या जादू की क्रिया करें।
यदि कोई उपयोगकर्ता इनपुट मौजूद नहीं है, या इनपुट के अंत में, जादू की क्रियाएं करें:
Cx Cb ... Cf स्विच को `ido-find-file 'में।
Cx Cf ... C गैर-माउस `खोज-फ़ाइल 'में आते हैं।
Cx Cd ... नॉन-ब्रीफ संक्षिप्त `dired 'के लिए Cf फॉलबैक।
Cx d ... गैर-माउस `dired 'को Cf की वापसी।"

2
मेरे लिए बस C-fवापस आना है find-file, नहीं C-x C-f। मुझे नहीं लगता है कि मैंने इसे कस्टमाइज़ किया है (और मैं, जैसे अन्य लोग यहां पर बहुत अधिक कमबैक पर भरोसा करते हैं। idoलगभग उतना ही परेशान करने वाला है, जितना कुछ समय के लिए उपयोग करने के बाद)।
harpo

1
@harpo मैंने अभी ऊपर के उत्तर को यह बताने के लिए अद्यतन किया कि C-x C-f C-fयह भी क्यों काम करता है।
कौशल मोदी

अधिकांश काम के लिए @kaushalmodi को धन्यवाद। मेरा जवाब शुरू में टिप्पणी की तरह सरल है। यह उसका जवाब होना चाहिए :) बस विश्वसनीयता के लिए एक नोट।
Tu Do

इसने मेरी पवित्रता को बचा लिया, क्योंकि निरपेक्ष रास्तों का उपयोग करते समय इडो ट्रम्प के साथ अच्छी तरह से नहीं खेलता है। धन्यवाद।
जेरीमी

6

यह देखते हुए कि आप पूर्ण पथ नामों के साथ काम कर रहे हैं, अन्य तरीके काम कर सकते हैं:

  • उपयोग M-x ffap( find-file-at-point): यह स्वचालित रूप से पथ का नाम पढ़ेगा और फ़ाइल को खोल देगा
  • सक्रिय करें M-x compilation-shell-minor-modeजो पथों के फ़ॉन्ट को बदल देगा और उन्हें "क्लिक करने योग्य" (मुंह या RET) के साथ बना देगा। उस पर क्लिक करने से आप उस फ़ाइल और विशिष्ट लाइन पर पहुँच जाते हैं, और आप उपयोग कर सकते हैं next-errorऔर previous-errorनेविगेट कर सकते हैं । मैं अक्सर इसका उपयोग करता हूं, जैसे शेल-मोड में

5

चूंकि इसे करने के लिए हमेशा एक से अधिक तरीके होते हैं, यहाँ @ abo-abo के विचार पर भिन्नता है जो सामान्य खोज कमांड पर वापस गिरने के बजाय निष्क्रिय पूर्णता को सक्रिय रखता है।

(defun ido-yank ()
  (interactive)
  (let ((path (current-kill 0)))
    (if (file-exists-p path)
        (progn
          (let ((dir (file-name-directory path)))
            (if dir (ido-set-current-directory dir)))
          (setq ido-exit 'refresh)
          (setq ido-text-init (if (file-directory-p path) nil (file-name-nondirectory path)))
          (setq ido-rotate-temp t)
          (exit-minibuffer))
      (yank))))

(define-key ido-file-dir-completion-map (kbd "C-y") 'ido-yank)

इस बंधन के साथ:

  • यदि वर्तमान किल एक वैध निर्देशिका पथ है, तो आप शुरू कर सकते हैं ido-find-file, C-yयाँक्ड निर्देशिका में कूद सकते हैं , और फिर फ़ाइल चुनने के लिए ido पूर्णता का उपयोग करना जारी रख सकते हैं।

  • यदि वर्तमान किल एक मान्य फ़ाइल पथ है, तो आप शुरू कर सकते हैं ido-find-file, C-yयाँक्ड निर्देशिका में कूदने के लिए हिट कर सकते हैं और पूर्ण के रूप में yanked फ़ाइल नाम की पेशकश कर सकते हैं, और उस फ़ाइल को खोलने के लिए RET को हिट कर सकते हैं।

  • यदि वर्तमान मार कुछ और है तो यह सामान्य रूप से समाप्त हो जाती है।


हो सकता है कि उनके बजाय letविभिन्न ido-...चरों को अलग करना बेहतर न हो setq? अभी, ऐसा लगता है कि आप फ़ंक्शन के जीवन के लिए ऐसा करने के बजाय स्थायी रूप से मान सेट कर रहे हैं।
दान

@ मैं ido कमांड के पैटर्न का अनुसरण कर रहा हूँ जैसे ido-next-work-directory। मुझे लगता है कि चर सेट हो जाते हैं ताकि वे एग्जिट-मिनीबफ़र कॉल और उसके बाद के रिफ्रेश में बचे रहें। लेकिन मैं अभी भी पूरी तरह से आईडीओ इंटर्ल्स को नहीं खींचता!
ग्लूकोज

हाँ, मैं सोच रहा था कि क्या वे बाद में वैसे भी ताज़ा हो जाएँगे। सिर्फ़ सिर में बिठाना चाहता था।
दान

4

शायद इस तरह:

(define-key ido-file-dir-completion-map (kbd "C-y") 'ido-yank)
(defun ido-yank ()
  (interactive)
  (if (file-exists-p (current-kill 0))
      (ido-fallback-command)
    (yank)))

यदि वर्तमान मार एक फाइल है जो मौजूद है, तो ऐसा करने से C-y C-y शायद आपको वह मिल जाए जो आप चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.