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


12

В 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

Это не может быть сделано легко. Перед [count]тем, как <C-w>fуказать, какой файл сопоставления 'path'открыт, он не выбирает существующее окно. Только для <C-w>wкоманды [count]означает «перейти к существующему номеру окна».

Чтобы получить эту функциональность, вам нужно написать собственное отображение, которое либо

  • захватывает файл, идет к [count]окну и эмулирует gfкоманду, или
  • клонирует текущий буфер в [count]окно и выполняет gfтам

Да, единственный способ сделать это - написать собственное отображение. У меня просто были некоторые проблемы с захватом файла под курсором. Но я думаю, что я понял это сейчас
psibar


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.