gpt4 book ai didi

vim - Quickfix 列表,如何添加和删除条目

转载 作者:行者123 更新时间:2023-12-04 16:42:31 28 4
gpt4 key购买 nike

在 vim 中,我通常使用 quickfix 列表作为一种待办事项列表来修复错误或重构代码。但是我的工作流程中存在一些问题:

  • 如果我必须向前跳 :cn多次比较代码的其他部分,找到最后编辑的条目 :cp很难。 :cw有帮助,但在更大的列表中,它也变得困难。删除固定条目会有所帮助。
  • 在重构时,我有时会遇到一些我想稍后返回的代码。使用全局标记是可以的,但是将当前位置添加到 quickfix 列表会更有帮助。

  • 所以我希望通过 :help quicktext 找到一个简单的命令将位置添加到快速修复列表或删除已修复的条目。但我能找到的只有 :cbuffer:caddb .但是在 :cw 之后编辑缓冲区我收到一条消息,它不可修改。帮助文本提供了以下解决方案(但我真的不想写临时文件):

    Note: Making changes in the quickfix window has no effect on the list of errors. 'modifiable' is off to avoid making changes. If you delete or insert lines anyway, the relation between the text and the error number is messed up. If you really want to do this, you could write the contents of the quickfix window to a file and use ":cfile" to have it parsed and used as the new error list.



    也许还有 :cad可以添加当前行吗?或者有没有人想到替代工作流程?

    最佳答案

    我在寻找从快速修复列表中删除项目的能力时发现了您的问题。我不太擅长 vimscript,所以可能有一个更优雅的解决方案,但这是我想出的。

    这将覆盖 dd在 quickfix 列表中(这几乎没什么用,因为 modifiable 已关闭)从 quickfix 列表中删除当前行(光标的当前行,而不是当前的 quickfix 项)。

    我不知道如何以编程方式确定当前的快速修复项目,这就是我决定使用 dd 的方式。 , 使其更明显地适用于光标所在的行。

    我希望你会觉得这很有用。

    " When using `dd` in the quickfix list, remove the item from the quickfix list.
    function! RemoveQFItem()
    let curqfidx = line('.') - 1
    let qfall = getqflist()
    call remove(qfall, curqfidx)
    call setqflist(qfall, 'r')
    execute curqfidx + 1 . "cfirst"
    :copen
    endfunction
    :command! RemoveQFItem :call RemoveQFItem()
    " Use map <buffer> to only map dd in the quickfix window. Requires +localmap
    autocmd FileType qf map <buffer> dd :RemoveQFItem<cr>

    更新:我已经修复了使用上述函数发现的一些问题。

    关于vim - Quickfix 列表,如何添加和删除条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42905008/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com