Ido'ya dosya adını zaten yapıştırabildiğimde yoldan çekilmesini nasıl söyleyebilirim?


14

Kendimi Ido modunu kullanmaya çalışıyorum. Bazı zamanlar güzel, ama bazen çok aptalca. İşte benim en büyük hayal kırıklığım.

Tam dosya adlarıyla bazı kayıtları okudum, sonra bir adı kopyaladım, o dosyayı açmayı deneyin.

Bunu Ido olmadan yapmanın yolu: C-aC-yC-kRET

Ido ile iki büyük sorun var:

  1. Dosya adının tamamı varsa, bunu girmenin bir yolu yoktur (ilk eğik çizgiyi kaldırmam gerekir, aksi halde basmak bile //yardımcı olmaz.

  2. Geri kalanını değiştirmeden dosya adının ara kısımlarını düzenleyemiyorum.

Yoksa yapabilir miyim?


2
Sen stok geri bırakın find-fileile C-x C-fve normal yapıştırın. Ama sonra, bu daha fazla tuş vuruşu. Veya zengin bir özellik istiyorsanız find-fileve yine de bu kullanım durumunuzu tatmin ediyorsanız Helm'i kullanabilirsiniz.
Tu Do

1
Ah, teşekkürler, hayır, bunu o kadar sık yapmıyorum ki fazladan iki tuş vuruşundan şikayet ediyorum. Bu aslında şimdilik ihtiyaçlarımı karşılayacaktı. Teşekkürler!
wvxvw

@Tu Do Bunu bir cevap olarak aşağıya koymalısınız. C-x C-fYedeklemeyi birçok kez yararlı buldum !
Kaushal Modi

Yanıtlar:


17

Bir iken idokomutu (aktif ido-find-filebu durumda) kullanarak, geri bırakabilirsiniz olmayan ido (aynı komutunun sürümü find-filebağlayıcı ido-varsayılan kullanarak bu durumda) C-x C-fiçin ido-fallback-command.

Sorunuzu cevaplamak için,

  • İlk C-x C-farayacak ido-find-file.
  • İkincisi C-x C-fgeri dönecek find-file.
  • Ardından, C-a C-y C-k RETkopyalanan bir dosya yolunu minibuffer'a asmak için yaptığınız gibi yapabilirsiniz.

Not: In ido, C-x C-f C-x C-faynı şeyi yapacak C-x C-f C-f, yani geri düşmek find-file.

Hakkında C-fdeido In ido-mode, C-fbağlı olduğu ido-magic-forward-char. Gönderen ido.el,

(defun ido-magic-forward-char (arg)
  Msgstr "Kullanıcı girdisinde ileri git veya sihirli eylem gerçekleştir.
Kullanıcı girişi yoksa veya girişin sonunda sihirli eylemler gerçekleştirin:
Cx Cb ... Cf `ido-find-file '' a geçer.
Cx Cf ... Cf Ido olmayan `` find-file '' ye geri dönüş.
Cx Cd ... Cf Ido olmayan kısa `dired 'e geri dönüş.
Cx d ... Cf Ido olmayan `` dir '' ye geri dönüş. "

2
Benim için sadece C-fgeri dönmek find-filedeğil C-x C-f. Özelleştirdiğimi görmüyorum (ve diğerleri gibi burada geri dönüşe çok güveniyorum. idoBir süredir kullandıktan sonra neredeyse değerinde olduğu kadar sorun var).
harpo

1
@harpo Yukarıdaki cevabı neden güncellediğini açıkladım C-x C-f C-f.
Kaushal Modi

Çalışmanın çoğu için @kaushalmodi'ye teşekkürler. Cevabım başlangıçta yorum gibi basit. Onun cevabı olmalı :) Sadece güvenilirlik için bir not.
Tu Do

Mutlak yolları kullanırken ido serseriyle güzel oynamadığı için bu benim aklımı kurtardı. Teşekkür ederim.
Jérémie

6

Tam yol adları ile uğraştığınız düşünüldüğünde, diğer yöntemler işe yarayabilir:

  • use M-x ffap( find-file-at-point): otomatik olarak yol adını okuyacak ve dosyayı açacaktır
  • etkinleştirme M-x compilation-shell-minor-mode(ağız veya yolların yazı tipini değiştirmek ve onları "tıklanabilir" yapacaktır RET). Üzerine tıklamak sizi o dosyaya ve belirli bir satıra getirir next-errorve previous-errorgezinmek için ve tuşlarını kullanabilirsiniz. Kabuk modunda olduğu gibi sık sık kullanıyorum .

5

Bunu yapmanın her zaman birden fazla yolu olduğundan, @ abo-abo'nin, normal bulma komutuna geri dönmek yerine ido tamamlamayı aktif tutan fikrinin bir varyasyonu.

(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)

Bu bağlama ile:

  • Geçerli öldürme geçerli bir dizin yoluysa, başlayabilir ido-find-file, C-ysolan dizine atlamak için tuşuna basabilir ve daha sonra bir dosya seçmek için ido tamamlamasını kullanmaya devam edebilirsiniz.

  • Geçerli öldürme geçerli bir dosya yoluysa, başlayabilir ido-find-file, C-ysolan dizine atlamak ve yanılmış dosya adını tamamlanma olarak sunmak ve o dosyayı açmak için RET tuşuna basabilirsiniz.

  • Eğer mevcut öldürme başka bir şeyse, normal olarak çekilir.


letÇeşitli ido-...değişkenleri setqonlardan ziyade bağlamak daha iyi olmayabilir mi? Şu anda, fonksiyonun ömrü boyunca bunu yapmak yerine değerleri kalıcı olarak ayarladığınız anlaşılıyor.
Dan

@Dan ido komutlarının desenini takip ediyorum ido-next-work-directory. Ben değişkenler çıkış minibuffer çağrı ve sonraki yenileme boyunca hayatta kalacak şekilde ayarlanır düşünüyorum. Ama yine de ido içlerine tam olarak bakmıyorum!
glucas

Evet, sonradan tazelenip yenilenmeyeceklerini merak ediyordum. Sadece kafa kafaya koymak istedim.
Dan

4

Belki şöyle:

(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)))

Geçerli öldürme varolan bir dosyaysa, yapmak C-y C-y muhtemelen size istediğinizi vermelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.