Bagaimana saya bisa memunculkan path ke file saat ini di baris perintah, sehingga untuk mengetik nama file yang sama? Saya tidak ingin singkatan yang akan diganti dengan nama file saat ini, saya ingin mengedit nama file, lengkap dengan jalur direktori. Misalnya, saya ingin :edit
file dengan nama yang mirip, atau di direktori yang sama, misalnya
vim src/submodule/frontend/frobnicate2.c
dan sekarang saya ingin mengedit ../trunk/src/submodule/frontend/frobnicate.c
, dan saya hanya ingin menyisipkan ../trunk
dan menghapus 2
, bukan mengetik ulang path lengkap.
Tentu saja saya bisa kembali ke shell dan menggunakan histori perintahnya, atau saya bisa menyalin-tempel path melalui GUI, tapi saya mencari cara yang lebih efisien yang tidak perlu meninggalkan Vim.
sumber
Ctrl-r =expand('%:p')
. Ini menggunakan register = .Jika Anda telah menetapkan
path
variabel vim Anda, Anda memiliki kekuatan penuh dari:find
perintah, yaitu tab-penyelesaian nama file (tanpa perlu menentukan bagian direktori!)Dalam kasus Anda, sesuatu seperti
mungkin semua yang Anda butuhkan untuk
:fin frob<tab>
bekerja. Untuk detail berdarah:help find
,,:help file-searching
.sumber
Berikut adalah pemetaan yang dapat Anda coba:
Ini menyimpan perintah saat ini kemudian mengatur register 'a' ke nama file saat ini. Kemudian perintah terakhir dipanggil kembali dan ditambahkan dengan isi register 'a'. Tentu saja jika Anda memiliki sesuatu yang berguna dalam register 'a' ini akan menimpanya.
Anda mungkin ingin mengubah karakter yang dipetakan ke sesuatu yang lain. Saya suka menggunakan tombol Alt tetapi tidak berfungsi di beberapa terminal.
Seperti yang ditunjukkan oleh Carpetsmoker dalam jawabannya, Anda dapat mengubah panggilan fungsi menjadi
untuk memaksa jalur penuh.
sumber
a
. Coba sesuatu seperti ini sebagai gantinya:cnoremap <M-q> <C-r>=fnameescape(expand('%:p'))<CR>