Skrót vim, aby otworzyć plik pod kursorem w już otwartym oknie


12

W vimie możesz otworzyć plik pod kursorem za pomocą gfpolecenia.

Można również łatwo otworzyć ten plik w nowym podzielonym oknie, naciskając <c-w> f. To naprawdę miła i oszczędzająca czas funkcja.

Nie wiem jednak, jak otworzyć plik w już otwartym podzielonym oknie (bez tworzenia nowego).


1
Możesz rzucić okiem na tę previewfunkcję (patrz :h preview).
Stéphane Chazelas

Tak, używam również podglądu. Nie chciałem jednak otwierać pliku w oknie podglądu, ale wyraźnie w innym.
psibar

Odpowiedzi:


10

Zebrałem wszystkie elementy, aby załatwić sprawę. Najlepszym sposobem jest utworzenie niestandardowego odwzorowania dla wszystkich poleceń:

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

Wyjaśnienie:

  • map <F8> mapuje na „F8” następujące polecenia
  • let mycurf=expand("<cfile>") pobiera nazwę pliku pod kursorem i zapisuje ją mycurf
  • <c-w>w zmienia fokus na następne otwarte okno podziału
  • execute("e ".mycurf) otwiera plik zapisany w mycurf
  • w końcu <c-w>pzmienia fokus na poprzednie okno (skąd właściwie przyjechaliśmy)

1

Nie da się tego łatwo zrobić. Znak „ [count]przed” <C-w>fokreśla, które dopasowanie pliku 'path'jest otwarte, nie wybiera istniejącego okna. Tylko dla <C-w>wpolecenia [count]oznacza „przejdź do istniejącego numeru okna”.

Aby uzyskać tę funkcjonalność, musisz napisać niestandardowe mapowanie, które albo

  • pobiera plik, idzie do [count]okna i emuluje gfpolecenie, lub
  • klonuje bieżący bufor do [count]okna i wykonuje się gftam

Tak, jedynym sposobem na to jest napisanie niestandardowego mapowania. Miałem tylko problem z pobraniem pliku pod kursorem. Ale myślę, że już to wymyśliłem
psibar


0

To działało dla mnie:

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

nmap ,f :call OpenFileInPrevWindow()<CR>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.