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!

Rafa de Castro
sumber

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.

hal tak berpengalaman
sumber
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.

abo-abo
sumber
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.

Kemangi
sumber
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) ))
Matthias
sumber