我有以下内容makeprg
在 vim 中编译我的 tex 文件:
setlocal makeprg=pdflatex\ \-file\-line\-error\ \-shell\-escape\ \-interaction=nonstopmode\ $*\\\|\ tee\ \/dev\/tty\ \\\|\ grep\ \-P\ ':\\d{1,5}:\ '
这给了我很好的结果(错误显示正确,忙碌时显示 tex 编译,......)
然而,有一件事让我不满意:当出现错误并且快速修复窗口弹出时,其状态栏上充斥着 makeprg 字符串:
pdflatex\ \-file\-line\-error\ \-shell\-escape\ \-interaction=nonstopmode\ $*\\\|\ tee\ \/dev\/tty\ \\\|\ grep\ \-P\ ':\\d{1,5}:\ '
有没有办法改变快速修复标题/状态栏?
答案1
经过一番挖掘和实验,我们发现 quickfix 窗口的“状态行”设置为
%t%{exists('w:quickfix_title')? ' '.w:quickfix_title : ''}
不幸的是,w:quickfix_title 变量直到 quickfix 缓冲区和窗口创建后才会定义,因此您无法使用自动命令取消定义 (:unlet) 或设置 w:quickfix_title 的值。但是,您可以使用自动命令设置 'statusline' 的值,因此将其放入 ~/.vimrc 中应该可以解决问题。
au BufWinEnter quickfix setl statusline=%t
答案2
最近版本的 vim 有一个quickfix 字典中的 'title' 字段:
每个快速修复和位置列表都有一个标题。默认情况下,标题设置为创建列表的命令。getqflist() 和 getloclist() 函数可分别用于获取快速修复和位置列表的标题。setqflist() 和 setloclist() 函数可分别用于修改快速修复和位置列表的标题。示例:
call setqflist([], 'a', {'title' : 'Cmd output'}) echo getqflist({'title' : 1})
写入此字段会破坏w:quickfix_title
,但反之则不然。
使用 setqflist 对 quickfix 标题的修改在:colder
/之间持续存在:cnewer
,因此您可以在初始加载时使用自动命令清除它们,并且它们应该永久保留该名称:
autocmd QuickfixCmdPost * call setqflist([], 'a', {'title' : 'Quickfix Title'})