zaten açılmış bir pencerede imlecin altındaki bir dosyayı açmak için vim kısayolu


12

Vim'de , komutu kullanarak imlecin altındaki bir dosyayı açabilirsinizgf .

Bu dosyayı vurarak yeni bir bölünmüş pencerede kolayca açabilirsiniz <c-w> f. Bu gerçekten güzel ve zaman kazandıran bir özelliktir.

Ancak, dosyayı zaten açılmış bir bölünmüş pencerede nasıl açacağımı anlayamıyorum (yeni bir pencere oluşturmadan).


1
previewÖzelliğe bir göz atmak isteyebilirsiniz (bkz. :h preview).
Stéphane Chazelas

Evet, önizlemeyi de kullanıyorum. Ancak dosyayı önizleme penceresinde açmak istemedim, ancak başka bir tanesinde.
psibar

Yanıtlar:


10

Hile yapmak için tüm parçaları bir araya getirdim. En iyi yol, tüm komutlar için özel bir eşleme oluşturmaktır:

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

Açıklama:

  • map <F8> aşağıdaki komutları "F8" de eşler
  • let mycurf=expand("<cfile>") dosya adını imlecin altına alır ve içine kaydeder mycurf
  • <c-w>w odağı bir sonraki açık bölünmüş pencereye değiştirir
  • execute("e ".mycurf) içine kaydedilmiş dosyayı açar mycurf
  • sonunda <c-w>podağı bir önceki pencereye değiştirir (gerçekte geldiğimiz yer)

1

Bu kolayca yapılamaz. Bir [count]önceki <C-w>füzerinde belirtir hangi dosya maç 'path'açıldığında, bu mu değil Mevcut bir pencereyi seçin. Yalnızca <C-w>wkomut için [count]"varolan pencere numarasına git" anlamına gelir.

Bu işlevselliği elde etmek için, özel bir eşleme yazmanız gerekir.

  • dosyayı yakalar, [count]pencereye gider ve gfkomutu öykünür veya
  • geçerli arabelleği [count]pencereye klonlar ve gforada yürütür

Evet, bunu yapmanın tek yolu özel bir eşleme yazmaktır. Sadece imlecin altındaki dosyayı kaparken biraz sorun yaşıyordum. Ama şimdi anladım
psibar

1

Aynı VIm işlevini aradım ve çekicilik gibi çalışan bu çözümü buldum:

map <F8> :vertical wincmd f<CR>

Kaynak sayfa .


0

Bu benim için çalıştı:

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

nmap ,f :call OpenFileInPrevWindow()<CR>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.