Apakah ada cara untuk mendapatkan gf
perintah vim (atau yang serupa) untuk mengenali +{cmd}
argumen untuk path file?
Seseorang dapat memulai vim dan langsung menuju ke istilah pencarian dengan melakukan:
$ vim +/coding_effort ~/project/file
Demikian pula, dalam mode perintah yang dapat Anda lakukan:
:e +/coding_effort ~/project/file
Saya sering membuat catatan dan merujuk ke file lain seperti ini:
For more info see +/coding_effort ~/project/file where there's a detailed discussion.
Saya ingin dapat memilih +/coding_effort ~/project/file
, mengetik sesuatu seperti gf
, dan vim melakukan hal yang benar.
key-bindings
command-line
search
Oliver Taylor
sumber
sumber
Jawaban:
Tidak, masalah pertama adalah ruang yang diperlukan antara perintah dan nama file bukan bagian dari
isfname'
opsi ' , dan menambahkan itu berarti batas file tidak dapat dikenali sama sekali. Anda harus selalu menggunakan pemilihan visual (baik dari perintah dan nama file), atau mengimplementasikan penguraian kustom dalamgf
perintah yang berlebihan.Kedua, built-in
gf
tidak mengenali+{cmd}
sintaks, jadi benar-benar tidak ada jalan untuk mengimplementasikan pemetaan kustom Anda sendiri. Hal ini tentunya mungkin (menggunakan fungsi sepertiexpand('<cfile>')
,getline()
, dll), tapi mungkin membutuhkan beberapa baris fungsi Vimscript.Jika Anda memilih sintaks yang berbeda (
filename:+command
), Anda dapat menyimpangf
perintah asli dan mengimplementasikan pemisahan dalam:autocmd
, mirip dengan apa yang terkait dengan file: plugin line lakukan untukfilespec:linenumber
).sumber
Berikut adalah fungsi yang harus mereplikasi
gf
perilaku bawaan, dan juga memindai untuk pekerjaan yang dimulai dengan+
yang kemudian diteruskan:edit
Komentar harus menjelaskan apa fungsi tidak lebih detail ... Saya menulis ini di kereta pagi, dan (jelas) tidak mengujinya secara ekstensif ;-)
sumber
Salah satu opsi adalah (dengan asumsi yang
+cmd file/path
dipilih) untuk menarik pilihan ke register, lalu memasukkan register itu di prompt perintah. Saya melakukan ini dengan pemetaan berikut:vnoremap gsf "0y:e <c-r>0<cr>
sumber
Notasi ini berfungsi (
file name
+trailing :
+/ pat /
)dengan fungsi dan pemetaan di bawah ini.
sumber