vim shortcut untuk membuka file di bawah kursor di jendela yang sudah dibuka


12

Dalam vim Anda dapat membuka file di bawah kursor dengan menggunakan gfperintah.

Seseorang juga dapat dengan mudah membuka file itu di jendela split baru dengan menekan <c-w> f. Ini adalah fitur yang sangat bagus dan hemat waktu.

Namun, saya tidak tahu, bagaimana cara membuka file di jendela split yang sudah dibuka (tanpa membuat yang baru).


1
Anda mungkin ingin melihat previewfitur tersebut (lihat :h preview).
Stéphane Chazelas

Benar, saya menggunakan pratinjau juga. Namun saya tidak ingin membuka file di jendela pratinjau tetapi secara eksplisit di yang lain.
psibar

Jawaban:


10

Saya mengumpulkan semua bagian untuk melakukan trik. Cara terbaik adalah membuat pemetaan khusus untuk semua perintah:

 map <F8> :let mycurf=expand("<cfile>")<cr><c-w> w :execute("e ".mycurf)<cr><c-w>p

Penjelasan:

  • map <F8> peta pada "F8" perintah yang mengikuti
  • let mycurf=expand("<cfile>") mendapatkan nama file di bawah kursor dan menyimpannya mycurf
  • <c-w>w mengubah fokus ke jendela split terbuka berikutnya
  • execute("e ".mycurf) membuka file yang disimpan di mycurf
  • akhirnya <c-w>pmengubah fokus ke jendela sebelumnya (dari mana kita sebenarnya berasal)

1

Itu tidak bisa dilakukan dengan mudah. A [count]sebelum <C-w>fmenentukan file mana yang cocok 'path'dibuka, itu tidak memilih jendela yang ada. Hanya untuk <C-w>wperintah, [count]berarti "buka nomor jendela yang ada".

Untuk mendapatkan fungsionalitas itu, Anda perlu menulis pemetaan khusus yang baik

  • meraih file, pergi ke [count]jendela dan mengemulasi gfperintah, atau
  • mengkloning buffer saat ini ke [count]jendela, dan mengeksekusi di gfsana

Ya satu-satunya cara untuk melakukannya adalah menulis pemetaan khusus. Saya baru saja mengalami masalah dengan mengambil file di bawah kursor. Tapi saya pikir saya sudah menemukan
jawabannya

1

Saya mencari fungsi VIm yang sama dan menemukan solusi ini yang berfungsi seperti pesona:

map <F8> :vertical wincmd f<CR>

Halaman sumber .


0

Ini bekerja untuk saya:

function! OpenFileInPrevWindow()
    let cfile = expand("<cfile>")
    wincmd p
    execute "edit " . cfile
endfunction

nmap ,f :call OpenFileInPrevWindow()<CR>
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.