23

我知道您可以使用 ctrl-w + enter 在新的水平窗口中打开快速修复项目。

有没有办法在垂直拆分中从快速修复窗口打开项目?

4

3 回答 3

12

这是一个快速且肯定不完美的尝试:

autocmd! FileType qf nnoremap <buffer> <leader><Enter> <C-w><Enter><C-w>L

<leader><Enter>映射仅在快速修复和位置窗口中处于活动状态。它在水平窗口 ( ) 中打开错误/位置<C-w><Enter>并将其转换为垂直窗口 ( <C-w>L)。

于 2013-05-24T21:08:25.587 回答
9

QFEnter插件看起来对你很有帮助。它允许在选定窗口、新垂直拆分窗口、新拆分窗口或新选项卡中打开快速修复项目。

于 2013-12-10T03:46:14.837 回答
8

QFEnter 插件 ( https://github.com/yssl/QFEnter ) 非常聪明和令人敬畏,它可以满足要求以及更多功能,而且它是高度可定制的。它也写得很好。

公认的解决方案会导致窗户抖动,因为它首先打开,然后旋转窗户。

而 QFEnter 插件则要优越得多,因为它的功能简洁且完全流畅。

如果您需要较少的功能(仅在拆分中打开的能力)或者由于某种原因您不能或不会安装插件,您可以使用以下vimrc代码段。它使用了我从 QFEnter 插件中学到的相同技术,尽管方式非常简单,并且仅使用 CtrlP (<C-v><C-x>) 提供的相同快捷方式提供垂直和水平分割。

" This is only availale in the quickfix window, owing to the filetype
" restriction on the autocmd (see below).
function! <SID>OpenQuickfix(new_split_cmd)
  " 1. the current line is the result idx as we are in the quickfix
  let l:qf_idx = line('.')
  " 2. jump to the previous window
  wincmd p
  " 3. switch to a new split (the new_split_cmd will be 'vnew' or 'split')
  execute a:new_split_cmd
  " 4. open the 'current' item of the quickfix list in the newly created buffer
  "    (the current means, the one focused before switching to the new buffer)
  execute l:qf_idx . 'cc'
endfunction

autocmd FileType qf nnoremap <buffer> <C-v> :call <SID>OpenQuickfix("vnew")<CR>
autocmd FileType qf nnoremap <buffer> <C-x> :call <SID>OpenQuickfix("split")<CR>
于 2018-03-18T07:29:04.467 回答