Ivy disabilita il completamento per un comando nel minibuffer


8

Posso disabilitare il completamento dell'edera per un singolo comando mentre sono nel minibuffer?

Ad esempio sono nella cartella ~ / code / study /. Se apro trova il file e compilo automaticamente con Ivy vedrò

Find file: ~/code/study/

./ 
../ 
[...]

e voglio, in un solo salto, andare su ~ / other / code / study. Dal momento che ho la modalità edera per il completamento automatico, non posso spostare il cursore sul primo / e digitare altro lì. Questo è un dolore per alcune cose. Posso in qualche modo modificare la prima parte di un completamento o persino disabilitare temporaneamente il completamento solo per questo comando?

Molte grazie!

Risposte:


12

Penso che quello che stai cercando sia C-M-j( ivy-immediate-done) nel mini buffer. Questa funzione è descritta come segue nel manuale Ivy :

Esce con l'input corrente anziché l'attuale candidato (come altri comandi).

Ciò è utile, ad esempio, quando si chiama find-file per creare un nuovo file, ma il nome desiderato corrisponde a un file esistente. In tal caso, usando C-j si selezionerebbe quel file esistente, che non è quello che si desidera: utilizzare invece questo comando.


Ma come posso spostare il cursore su ~ / <here> / code / study per modificare e applicare il comando immediato?
Rafa de Castro,

Non credo che tu possa farlo C-M-j, ma è un modo per disabilitare il completamento.
tirocinio

5

Esistono diversi approcci alla navigazione dei file che si applicano qui.

Solo per riformulare la tua dichiarazione:

passa da ~ / code / study a ~ / other / code / study

  1. Più semplice e coerente: utilizzare ~per passare ~/e navigare da lì.
  2. Supponiamo che tu abbia già visitato ~/code/studyuna volta nella sessione di Emacs corrente. Premere C-rper accedere a tutti i file visitati in precedenza. È possibile cancellare la parte del file con C-k.
  3. Supponiamo di avere ~/code/studycome segnalibro o in recentf. Premere M-o bper ottenere il completamento per quelli.
  4. Supponiamo di essere nel diredbuffer di ~/code/study. Premere 0wper copiare il percorso corrente. Premere C-x C-f C-y: è possibile modificare lo yank nel minibuffer.

Modifica: un altro approccio

Con il commit più recente , è possibile premere C-M-o w C-yper modificare il percorso completo nel minibuffer. Se lo usi molto, counsel-find-file-mapè disponibile per associare questa combinazione a qualcosa di più corto.


1

È possibile modificare la radice del nome file durante il completamento digitando DELo <backspace>. Ciascuno di questi tasti preme sulla directory principale.

Vedere la sezione Completamento del nome del file del manuale dell'utente Ivy per ulteriori informazioni. In particolare, potresti essere interessato alla gestione speciale di barre e tilde - l'immissione di due barre durante qualsiasi parte del completamento cambierà la directory nella directory principale ( /) e allo stesso modo una tilde passerà alla tua directory home.

Vedi anche variabile personalizzabile ivy-on-del-error-function.


Se lo facessi, avrei "~ / code / study", quindi backspace "~ / code /", quindi "~" codice. E avrei dovuto ricominciare con Dropbox / code / study. Vorrei evitare quella ripetizione di codice / studio.
Rafa de Castro,

0

Se lo fai, puoi comunque ottenere il comportamento predefinito di ricerca del file

(defun default-find-file ()
  (interactive)
  (exit-minibuffer)
   (let  ((completing-read-function 'completing-read-default))
     (call-interactively 'find-file) ))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.