使quickfix缓冲区可修改

时间:2018-11-18 03:52:25

标签: vim

当前,我正在尝试使用cscope清理quickfix窗口,并使用以下命令来做到这一点:

augroup quickfix
    autocmd!
    autocmd BufRead qf set modifiable
    autocmd FileType qf
                \   set modifiable        |
                \   set hidden            |
                \   execute ":%s/<<.*>>//g"
augroup END

这样,无论何时打开文件,<<>>标记都会被删除。但是,由于默认情况下Quickfix窗口为nomodifiable,因此我必须强制使用它。

在测试过程中,我发现替换已执行,但之后的quickfix窗口仍为nomodifiable;因此,我无法编辑其内容或将其用作注释。可以在打开窗口后手动设置可修改的设置,但这并不方便。也许我错过了一些东西或使用了错误的事件。有人可以解释出什么问题吗?

2 个答案:

答案 0 :(得分:1)

在您不熟悉autogroup的情况下,迫切需要解决这些问题。

只需在.vimrc中尝试或执行以下行即可: au BufRead errors.err set ma hidden | execute ":%s/<<.*>>//g"

然后应该修改quickfix文件(通常称为“ errors.err”)。

(如果使用其他名称,请用它代替'errors.err',或使用类似'* .err'的模式。)

有关更多信息,请参见:h au

答案 1 :(得分:0)

我怀疑您使用quickfix列表的过程本质上是效率低下的,但是如果您想以此方式滥用它并使其可修改,那么对我来说,以下工作是可行的:

au! FileType qf set ma hidden | execute ":%s/<<.*>>//g"
au! BufReadPost quickfix set ma

有关更多信息,请参见:h CTRL-W-<Enter>