Apakah ada cara untuk membuat simbol khusus %
berfungsi dengan nama jalur pada baris perintah? Sebagai contoh, saya ingin melakukan:
:diffsplit Path\to\other\directory\%
Sehingga saya bisa melakukan @:
dengan cepat membandingkan file dengan nama yang sama. Namun, ini hanya membuka buffer baru yang disebut %
.
Tentu saja saya bisa melakukannya:
:exe 'diffsplit Path\to\other\directory\'.expand('%')
Tapi ini rumit karena saya tidak bisa tab direktori lengkap saat mengetik perintah.
Apakah ada cara lain yang lebih baik untuk melakukan ini?
Ini pertanyaan terkait , tetapi tidak menjawab situasi saya dengan tepat.
Sunting: Hanya untuk memperjelas, saya ingin dapat menggunakan kembali perintah secara tepat untuk file yang berbeda. Jadi solusi yang cukup mengisi file saat ini di baris perintah tidak akan berfungsi. Perintah yang sama harus bekerja untuk nama file yang berbeda .
sumber
%
, itu akan mengisi nama file, tetapi kemudian ketika saya ingin menggunakan kembali baris itu, nama file lama akan tetap ada. Saya ingin% memasukkan secara dinamis nama file saat ini, apa pun yang terjadi pada saat itu tanpa harus mengetik ulang.:diffsplit Path/to/other/directory/%:t
Jawaban:
Karakter khusus (lihat
:h cmdline-special
) dan pengubah nama file (lihat:h filename-modifiers
) diperluas pada baris perintah, jadi:sumber
Jadi ternyata itu masalah Windows yang bodoh. Obat untuk ini adalah dengan hanya menggunakan garis miring ke depan dalam nama path. yaitu
:diffsplit Path/to/other/directory/%
bekerja dengan baik.Saya telah memperbaiki ini di sistem saya dengan menggunakan opsi
set shellslash
yang secara default menggunakan forward slash bahkan pada Windows.sumber
%
, dan merupakan pemisah jalur default pada Windows. Vim tidak tahu mana yang ada dalam pikiranmu.directory\\%
tetapi itu masih tidak berhasil. IDK, tapi saya kira itu tidak masalah karena garis miring memecahkan masalah.Saya tidak tahu apakah ini baik untuk Anda:
Hanya satu lagi penekanan tombol ke sumber asli Anda,
<C-r>
untuk mengisi nilai%
register.sumber
@:
untuk file masa depan karena "kode keras" nama file saat ini.:Mydiff /path/to/there/
agar path bisa diselesaikan tab. kirimkan saja ini ke perintah / fungsi Anda denganexec