Ivy menonaktifkan penyelesaian untuk perintah dalam minibuffer


8

Bisakah saya menonaktifkan penyelesaian ivy untuk satu perintah saat di minibuffer?

Misalnya saya ada di folder ~ / code / study /. Jika saya membuka mencari file dan lengkapi otomatis dengan Ivy saya akan melihat

Find file: ~/code/study/

./ 
../ 
[...]

dan saya ingin, dalam sekali lompat ke ~ / other / code / study. Karena saya memiliki ivy-mode ke autocomplete, saya tidak dapat memindahkan kursor saya ke yang pertama / dan cukup ketik yang lain di sana. Ini menjadi rasa sakit untuk beberapa hal. Bisakah saya mengedit bagian pertama dari penyelesaian atau bahkan menonaktifkan penyelesaian sementara hanya untuk perintah ini?

Terima kasih banyak!

Jawaban:


12

Saya pikir yang Anda cari adalah C-M-j( ivy-immediate-done) di buffer mini. Fungsi ini dijelaskan sebagai berikut dalam manual Ivy :

Keluar dengan input saat ini alih-alih kandidat saat ini (seperti perintah lainnya).

Ini berguna misalnya ketika Anda memanggil file-menemukan untuk membuat file baru, tetapi nama yang diinginkan cocok dengan file yang ada. Dalam hal itu, menggunakan C-j akan memilih file yang ada, yang bukan apa yang Anda inginkan — gunakan perintah ini sebagai gantinya.


Tetapi bagaimana saya bisa mendapatkan kursor saya ke ~ / <here> / code / study untuk mengedit dan menerapkan yang segera dilakukan?
Rafa de Castro

Saya rasa Anda tidak bisa C-M-j, tetapi ini adalah salah satu cara menonaktifkan penyelesaian.
tirocinium

5

Ada beberapa pendekatan untuk navigasi file yang berlaku di sini.

Untuk mengulangi pernyataan Anda:

beralih dari ~ / code / study ke ~ / other / code / study

  1. Paling mudah dan paling konsisten: gunakan ~untuk beralih ke ~/dan menavigasi dari sana.
  2. Asumsikan Anda ~/code/studypernah mengunjungi satu kali sebelumnya dalam sesi Emacs saat ini. Tekan C-runtuk mengakses semua file yang Anda kunjungi sebelumnya. Anda dapat menghapus bagian file dengan C-k.
  3. Asumsikan Anda memiliki ~/code/studybookmark atau masuk recentf. Tekan M-o buntuk menyelesaikannya.
  4. Asumsikan Anda berada di diredbuffer ~/code/study. Tekan 0wuntuk menyalin jalur saat ini. Tekan C-x C-f C-y: Anda dapat mengedit yank di minibuffer.

Sunting: satu lagi pendekatan

Dengan komit terbaru , Anda dapat menekan C-M-o w C-yuntuk mengedit path lengkap di minibuffer. Jika Anda sering menggunakan ini, counsel-find-file-maptersedia untuk mengikat kombinasi ini ke sesuatu yang lebih pendek.


1

Anda dapat mengedit root nama file selama selesai dengan mengetik DELatau <backspace>. Setiap penekanan tombol tersebut beralih ke direktori induk.

Lihat bagian Penyelesaian Nama File pada Manual Pengguna Ivy untuk informasi lebih lanjut. Khususnya, Anda mungkin tertarik dengan penanganan khusus garis miring dan tilde - memasukkan dua garis miring selama bagian penyelesaian akan mengubah direktori ke direktori root ( /) dan juga tilde akan beralih ke direktori home Anda.

Lihat juga variabel yang dapat disesuaikan ivy-on-del-error-function.


Jika saya melakukan itu saya akan memiliki "~ / code / study" lalu backspace "~ / code /" maka "~" kode. Dan saya harus mulai lagi dengan Dropbox / code / study. Saya ingin menghindari pengulangan kode / studi.
Rafa de Castro

0

Anda masih bisa mendapatkan perilaku file-pencarian default jika Anda melakukannya

(defun default-find-file ()
  (interactive)
  (exit-minibuffer)
   (let  ((completing-read-function 'completing-read-default))
     (call-interactively 'find-file) ))
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.