vim在已打开的窗口中的光标下打开文件的快捷方式


12

在vim中,您可以 使用以下命令在光标下方打开文件gf

点击也可以在新的拆分窗口中轻松打开该文件<c-w> f。这是一个非常好的省时功能。

但是,我不知道如何在一个已经打开的拆分窗口中打开文件(而不创建一个新窗口)。


1
您可能需要看一下preview功能(请参阅参考资料:h preview)。
斯特凡Chazelas

正确,我也使用预览。但是我不想在预览窗口中打开文件,而是在另一个窗口中显式打开。
psibar 2013年

Answers:


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

1

我搜索了相同的VIm函数,并找到了类似魅力的解决方案:

map <F8> :vertical wincmd f<CR>

源页面


0

这为我工作:

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

nmap ,f :call OpenFileInPrevWindow()<CR>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.