加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 22:46:41 所属栏目:安全 来源:网络整理
导读:在 vim我通常使用quickfix列表作为todo列表的类型来修复错误或重构代码.但是我的工作流程有一些问题: 如果我必须多次跳转:cn来比较代码的其他部分,找到最后编辑的条目:cp是很困难的. :cw有帮助,但在更大的列表上,它也变得困难.删除固定条目会很有帮助.
在 vim我通常使用quickfix列表作为todo列表的类型来修复错误或重构代码.但是我的工作流程有一些问题:

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

所以我希望找到一个简单的命令:help quicktext将位置添加到quickfix列表或删除已经修复的条目.但我能找到的只有: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可以添加当前行吗?还是有人在考虑其他工作流程?

解决方法

我找到了你的问题,特别是寻找从quickfix列表中删除项目的能力.我不是非常擅长vimscript,所以可能有一个更优雅的解决方案,但这就是我想出来的.

这会覆盖quickfix列表中的dd(无论如何都是无用的,因为可修改已关闭)从quickfix列表中删除当前行(光标的当前行,而不是当前的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>

更新:我已经解决了上面找到的一些问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读