ярлик vim, щоб відкрити файл під курсором у вже відкритому вікні


12

In vim ви можете відкрити файл під курсором за допомогою gfкоманди.

Ви також можете легко відкрити цей файл у новому розділеному вікні, натиснувши його <c-w> f. Це дійсно приємна та економія часу функції.

Однак я не можу зрозуміти, як відкрити файл у вже відкритому розділеному вікні (не створюючи нового).


1
Ви можете ознайомитися з previewфункцією (див. :h preview).
Стефан Шазелас

Правильно, я також використовую попередній перегляд. Однак я не хотів відкривати файл у вікні попереднього перегляду, але чітко в іншому.
псибар

Відповіді:


10

Я зібрав всі шматки разом, щоб зробити трюк. Найкращий спосіб - створити спеціальне відображення для всіх команд:

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

Пояснення:

  • map <F8> відображає наступні команди "F8"
  • let mycurf=expand("<cfile>") отримує ім'я файлу під курсором і зберігає його в mycurf
  • <c-w>w змінює фокус на наступне відкрите розділене вікно
  • execute("e ".mycurf) відкриває збережений у файлі файл mycurf
  • нарешті <c-w>pзмінює фокус на попереднє вікно (звідки ми насправді прийшли)

1

Це неможливо зробити легко. A [count]раніше <C-w>fвказує, на яке збіг файлів 'path'відкрито, він не вибирає існуюче вікно. Тільки для <C-w>wкоманди [count]означає "перейти до існуючого номера вікна".

Щоб отримати цю функціональність, вам потрібно написати спеціальне відображення, яке або

  • захоплює файл, переходить до [count]вікна та емулює gfкоманду, або
  • клонує поточний буфер до [count]вікна і виконує gfтам

Так, єдиний спосіб зробити це - написати власне відображення. У мене просто виникали проблеми із захопленням файлу під курсором. Але я думаю, я зараз це зрозумів
псибар


0

Це працювало для мене:

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

nmap ,f :call OpenFileInPrevWindow()<CR>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.