Ivy deshabilita la finalización de un comando en minibúfer

8

¿Puedo desactivar la finalización de hiedra para un solo comando mientras estoy en minibúfer?

Por ejemplo, estoy en la carpeta ~ / code / study /. Si abro buscar archivo y autocompletar con Ivy, veré

Find file: ~/code/study/

./ 
../ 
[...]

y quiero, en un solo salto ir a ~ / other / code / study. Como tengo el modo de hiedra para autocompletar, no puedo mover el cursor al primero / y simplemente escribir otro allí. Esto está siendo un dolor para algunas cosas. ¿Puedo editar de alguna manera la primera parte de una finalización o incluso desactivar temporalmente la finalización solo para este comando?

¡Muchas gracias!

Rafa de Castro
fuente

Respuestas:

12

Creo que lo que estás buscando es C-M-j( ivy-immediate-done) en el mini buffer. Esta función se describe como sigue en el manual de Ivy :

Sale con la entrada actual en lugar del candidato actual (como otros comandos).

Esto es útil, por ejemplo, cuando llama a find-file para crear un nuevo archivo, pero el nombre deseado coincide con un archivo existente. En ese caso, usar C-j seleccionaría ese archivo existente, que no es lo que desea, use este comando en su lugar.

tirocinio
fuente
Pero, ¿cómo puedo colocar mi cursor en ~ / <aquí> / código / estudio para editar y aplicar el hecho inmediato?
Rafa de Castro
No creo que puedas hacerlo C-M-j, pero es una forma de deshabilitar la finalización.
tirocinium
5

Existen múltiples enfoques para la navegación de archivos que se aplican aquí.

Solo para reformular su declaración:

cambiar de ~ / code / study a ~ / other / code / study

  1. Más fácil y más consistente: use ~para cambiar ~/y navegar desde allí.
  2. Suponga que visitó ~/code/studyuna vez antes en la sesión actual de Emacs. Presione C-rpara acceder a todos los archivos que visitó anteriormente. Puede borrar la parte del archivo con C-k.
  3. Supongamos que tiene ~/code/studycomo marcador o en recentf. Presione M-o bpara completarlos.
  4. Suponga que está en el diredbúfer de ~/code/study. Presione 0wpara copiar la ruta actual. Presione C-x C-f C-y: puede editar el tirón en el minibúfer.

Editar: un enfoque más

Con la confirmación más reciente , puede presionar C-M-o w C-ypara editar la ruta completa en el minibúfer. Si usa esto mucho, counsel-find-file-mapestá disponible para vincular esta combinación a algo más corto.

abo-abo
fuente
1

Puede editar la raíz del nombre de archivo durante la finalización escribiendo DELo <backspace>. Cada pulsación de tecla cambia al directorio principal.

Consulte la sección Finalización del nombre de archivo del Manual del usuario de Ivy para obtener más información. En particular, puede estar interesado en el manejo especial de barras y tildes: al ingresar dos barras durante cualquier parte de la finalización, se cambiará el directorio al directorio raíz ( /) y, de manera similar, una tilde cambiará a su directorio de inicio.

Ver también variable personalizable ivy-on-del-error-function.

Albahaca
fuente
Si hago eso, tendría "~ / código / estudio", luego retroceda "~ / código /" y luego código "~". Y tuve que comenzar de nuevo con Dropbox / code / study. Me gustaría evitar esa repetición de código / estudio.
Rafa de Castro
0

Aún puede obtener el comportamiento predeterminado de buscar archivo si lo hace

(defun default-find-file ()
  (interactive)
  (exit-minibuffer)
   (let  ((completing-read-function 'completing-read-default))
     (call-interactively 'find-file) ))
Matías
fuente