vim-vquickfix

asyncrun.vim:快速执行异步Shell命令并输出到Vim Quickfix窗口 用户自定义命令的执行配置通常包含在Vim的配置文件.vimrc中,该文件位于用户的主目录下。编辑.vimrc文件可以使用Vim本身,也可以使用外部文本编辑器。在.vimrc中添加自定义命令时,需要遵循Vim的脚本语法。每一条命令或定义必须以换行符结束,以确保脚本的正确执行。Vim脚本支持变量、函数、条件判断、循环等编程结构。以下是一个简单的例子,展示如何在.vimrc中添加一个用户自定义命令:" 定义一个简单的函数,输出当前时间function! 阅读详情

原文:http://easwy.com/blog/archives/advanced-vim-skills-quickfix-mode/

通常,我们在开发过程中,经常要写代码,编译,修改编译错误,这个过程会数十遍上百遍的重复。如果你是根据编译器输出的错误信息,打开出错的文件,找到出错的行,然后再开始修改,那效率未免太低下了。

利用vim的quickfix模式,可以大大加快这一过程,你可以在vim启动编译,然后vim会根据编译器输出的错误信息,自动跳到第一个出错的地方,让你进行修改;修改完后,使用一个快捷键,跳到下一个错误处,再进行修改,方便的很。

为了做到这一点,你首先要定义编译时所使用的程序,对大多数使用Makefile的项目来说,vim的缺省设置”make“已经可以满足要求了。如果你的项目需要用一个特殊的程序进行编译,就需要修改’makeprg‘选项的值。

大家在学编程时大概都读过”hello world”程序,我们就以这个简单的例子为例,讲一下quickfix模式的用法。

该程序的内容如下,里面包含了三个小小的错误:

/* hello world demo */
#include <stdio.h"
int main(int argc, char **argv)
{
    int i;
    print("hello world\n");
    return 0;
} 

我们可以为这个程序写个小小的Makefile文件,不过为了演示’makeprg‘的设置方法,我们并不用Makefile,而直接设置’makeprg‘选项,如下:

:set makeprg=gcc\ -Wall\ -ohello\ hello.c 

上面的命令会把hello.c编译为名hello的可执行文件,并打开了所有的Warnning。如果编译命令中有空格,需要使用’\‘对空格进行转义,上面的例子就使用了’\‘转义空格。

我们设置好’makeprg‘选项后,输入下面的命令就可以编译了:

:make 

在使用”:make“时,vim会自动调用’makeprg‘选项定义的命令进行编译,并把编译输出重定向到一个临时文件中,当编译出现错误时,vim会从上述临时文件中读出错误信息,根据这些信息形成quickfix列表,并跳转到第一个错误出现的地方。

对于我们上面的程序来说,光标会停在第三行,也就是第一个出错的位置,vim同时会提示出错信息。如果你没看清出错信息,可以输入”:cc“命令,vim会更次显示此信息,或者干脆使用”:cw“命令,打开一个quickfix窗口,把所有的出错信息显示出来,见下图:

现在我们知道错在哪儿了,修正一下,然后使用”:cn“命令(或者在Quickfix List对应行上输入回车)跳到下一个出错的地方,以此类推,直到修正全部错误。

好了,千辛万苦,我们的hello world终于工作了。乍一看这个例子,似乎Quickfix并没有提高什么效率,但如果你的错误出现在多个不同目录的不同文件里,它可以帮你省很多时间,使你可以集中精力在修正bug上。

vim可以同时记住最新的10个错误列表,也就是说你最近10次使用”:make“命令编译所遇到的错误都保存着,可以使用”:colder“和”:cnewer“命令,回到旧的错误列表,或者到更新的错误列表。

在quickfix模式里经常用到的命令有:

:cc                显示详细错误信息 ( :help :cc )
:cp                跳到上一个错误 ( :help :cp )
:cn                跳到下一个错误 ( :help :cn )
:cl                列出所有错误 ( :help :cl )
:cw                如果有错误列表,则打开quickfix窗口 ( :help :cw )
:col               到前一个旧的错误列表 ( :help :col )
:cnew              到后一个较新的错误列表 ( :help :cnew ) 

更多的命令,以及这些命令更详细的解释,请参见手册。

对于经常用到的命令,最好提供更方便的使用方法,在我的vimrc中的定义:

autocmd FileType c,cpp  map <buffer> <leader><space> :w<cr>:make<cr>
nmap <leader>cn :cn<cr>
nmap <leader>cp :cp<cr>
nmap <leader>cw :cw 10<cr> 

现在使用”,<space>“(先按,再按空格)就可以编译,使用”,cp“和”,cn“跳到上一个和下一个错误,使用”,cw“来打开一个quickfix窗口。这下顺手多了!

如果你希望跳转到出错的文件时,使用一个分隔的窗口打开,请参阅’switchbuf‘选项的值。

在vim7中,每个窗口都可以拥有自己的位置列表,这样,你就能够同时打开多个位置列表了,而quickfix列表在整个vim中只有一个。你可以使用位置列表来显示编译错误信息,具体命令参阅手册:”:help location-list“以及”:help :lmake“。

[GREP]

我们在程序员的利器 – cscope中讲过,cscope可以做为一个快速的grep程序使用,对于我们的软件项目,用cscope生成一个数据库,可以大大加快查找字符串的速度。但cscope需要事先生成一个数据库,对一些简单的查找,不需要专门为之生成数据库,这时候可以使用grep。

Grep的名字来源于”g/re/p”,”re”是正则表达式(regex)的意思,”p”是打印,也就是把匹配正则表达式的行打印出来。

vim既可以使用外部的grep程序,也可以使用内部集成的grep功能。

使用集成的grep命令非常简单,通常使用格式为:

:vimgrep /main/gj **/*.c 

在上面的例子里,我们使用vim内部集成的grep功能,在当前目录及其子目录树的所有c文件中查找main字符串,如果一行中main出现了多次,每个匹配都计入;在查找到后,不立即跳转到第一个匹配的地方。

使用内部集成的grep功能速度要比外部grep慢一些,因为它会打开每个文件,对其进行检查,然后关闭;但集成的grep支持vim增强的正则表达式,可以利用它进行更为复杂的查找。它也支持vim扩展的文件通配符表示方式,见”:help starstar-wildcard“。

vimgrep查找到的结果,也会放在quickfix列表中。下图是在vim 7.0的源代码目录中执行上面的命令生成的quickfix列表:

我们可以使用上面介绍的quickfix模式的命令,来查看这些匹配。

你也可以用外部的grep程序来查找,如果你的系统中所用的不是标准的grep程序,那么就需要修改’grepprg‘选项,详情请参阅手册。

使用外部grep的语法与grep程序相同,请参阅grep的手册。

无论使用内部的vimgrep,还是使用外部的grep,vim都允许你将查找到的结果放在与窗口相关联的位置列表,要了解详细信息,”:help :lvimgrep“及”:help :lgrep“。

在我的vimrc中,定义下面的键映射,利用它可以在当前文件中快速查找光标下的单词:

nmap <leader>lv :lv /<c-r>=expand("<cword>")<cr>/ %<cr>:lw<cr> 

ENVI中Landsat8大气校正法实现地表温度精准反演 本文详细介绍了在ENVI软件中,利用大气校正法对Landsat8热红外数据进行地表温度反演的完整流程。该方法通过辐射定标、大气参数获取、发射率估算及温度转换四个核心步骤,精准剔除大气干扰,还原地表真实温度,是城市热岛效应监测、农业旱情分析等应用的关键技术。 阅读详情

相关推荐

提升仿真效率:Synopsys VCS高级编译选项优化技巧(2023最新版)

本文深入探讨了Synopsys VCS 2023版本中的高级编译选项优化技巧,帮助工程师提升仿真效率。通过并行编译、智能代码分析、精准覆盖率采样等策略,结合真实案例展示如何显著缩短仿真周期并优化资源使用,适用于数字芯片验证和大型SoC设计。

weixin_30338481的博客 113

【Vim使用】6.quickfix使用及一键编译

在程序的开发过程中,很重要的一个循环是:编辑-编译-编辑,vim中的quickfix功能就是为了提高这一循环的效率。quickfix功能将编译过程中产生的错误信息保存到文件中,然后vim利用这些信息跳转到源文件的对应位置,我们就可以进行错误的修正,之后跳到下一个错误重复上述操作,从而极大地提高编译错误的修改效率。 在vim中除了文本编辑功能外,还可以直接地调用外部的编译器完成程序的编译工作,

TramiDu_Tech 2517

vi/vim: 剑不离手 – quickfix

本节所用命令的帮助入口: :help quickfix :help :make :help 'makeprg' :help 'errorformat' :help 'switchbuf' :help location-list :help grep :help :vimgrep :help :grep :help starstar-wildcar...

weixin_34080903的博客 414

西门子smart能搜到cpu但连接当前IP地址失败

将ip地址改到同一网段 本机为192.168.1.119就是192.168.1.1网段,但plc在192.168.0.1网段,所以显示ip连接失败,改为同一网段192.168.1.xxx即可(为避免ip冲突尽量改到200往后最大255)如果显示这一步,那么你的物理连接是没有问题的,应当是plc和电脑并不在同一网段导致的问题。输入ipconfig 查看本机网段与plc是否为同一网段。此电脑就不在同一网段所有造成通讯失败,接下来解决这个问题。win+r打开运行,打开cmd。再次尝试,如果还是报错,那么。

weixin_62678581的博客 9859

ESP32-IDF开发之旅 外设篇④ 串口通信 Uart

ESP32-S3 UART串口通信详解 本文介绍了ESP32-S3的UART串口通信配置流程,涵盖硬件引脚分配、参数设置、数据收发等关键步骤。

单片机菜鸟哥的博客 495

vim插件之quickfix

quickfix是vim内置插件,用于浏览命令执行结果信息。命令需要进行设定,才能把执行结果显示到quickfix中。如cscope需要在.vimrc中添加如下语句: set cscopequickfix=s-,c-,d-,i-,t-,e- 常用的quickfix命令为: :cc     显示详细错误信息 :cp     跳到上一个错误 :cn     跳到下一个错误 :c

qwaszx523的博客 5665

第七天 Labview进阶(7.4 NI Vision简单使用)

NIVision机器视觉软件使用指南 摘要:NIVision是National Instruments推出的高效机器视觉软件,具有硬件无缝集成、图形化编程和工业级部署等优势。本文介绍了NIVision的安装步骤(需Vision Acquisition和Vision Development模块)及三个典型应用案例:1)实物检测通过IMAQCreate等模块实现物体识别与坐标定位;2)OCR检测利用IMAQOCR系列模块完成字符识别;3)几何模板匹配使用IMAQLearnGeometricPattern等模块实

weixin_38637405的博客 771

vim quickfix——最灵活的quickfix

本文主要介绍 vim quickfix 的使用与优化。 什么是 quickfix quickfix 属于 vim 的高级功能,该功能在主流 IDE 或者编辑器中都有集成。 简单的说,quickfix 就是搜集编译器的输出信息,然后定位错误与警告位置,提供直接跳转功能。可以说有了完善的 quickfix 功能的 vim 编辑器才是真正的编辑器之神。 如何使用 quickfix 首先来了解一下 quickfix 的工作流程。 第一步,设定要执行的命令,也就是编译、运行程序的命令。可以在 vim 中通过命令设

niuiic的博客 6393

【Tessy】集成测试小白入门指导

本文详细介绍了如何进行集成测试的小白入门指导,从新建工程到设计用例,实现集成测试的过程详细步骤

qq_37282365的博客 1184

Swin Transformer 类可视化(grad CAM)

完整代码 from pytorch_grad_cam import GradCAM, ScoreCAM, GradCAMPlusPlus, AblationCAM, XGradCAM, EigenCAM from pytorch_grad_cam.utils.image import show_cam_on_image from torchvision.models import resnet50 import glob from demo import parse_option from models i

G果的博客 6638

vim quickfix 插件定位出错

quickfix

赵凯月的博客 344

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

vim的quickfix模式

通常,我们在开发过程中,经常要写代码,编译,修改编译错误,这个过程会数十遍上百遍的重复。如果你是根据编译器输出的错误信息,打开出错的文件,找到出错的行,然后再开始修改,那效率未免太低下了。 利用vim的quickfix模式,可以大大加快这一过程,你可以在vim启动编译,然后vim会根据编译器输出的错误信息,自动跳到第一个出错的地方,让你进行修改;修改完后,使用一个快捷键,跳到下一个错误处,再进行

tycoon的专栏 1760

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Vim/Neovim 中的快速修复列表和位置列表

本文主要介绍vim/neovim中有关快速修复列表和位置列表的比较和使用。

HZ_Samuel博客 1188

告别代码调试混乱:Vim快速修复列表全攻略

你是否还在为代码中的错误定位焦头烂额?当编译器抛出一连串错误时,是否需要逐个文件手动查找?本文将带你掌握Vim的Quickfix(快速修复列表)功能,这是Vim内置的错误导航与处理系统,能让你在项目中高效定位和修复问题。通过本文,你将学会如何生成、导航和管理错误列表,以及如何通过配置优化工作流,让调试过程变得井然有序。 ## 快速修复列表基础 ### 什么是Quickfix列表 Quickf...

gitblog_01177的博客 506

vim 中的 quickfix 指令

用 quickfix 可以快速修改编译错误。 运行了 make 命令编译之后,如果有编译错误 Vim 会以列表形式把编译错误列出,并使用 quickfix 工具快速帮你定位出错的行。 指令 说明 cc 显示编译错误的详细信息,这些信息显示在状态行里 cn 下一个编译错误 cp 前一个编译错误 cw 打开Quickfix窗口.这会在屏幕下面打开一个新窗口,里面的内容就是一个编译错误列表 cl 列出所有的编译错误 quickfix 实际上就是一个编译错误列表,每个 quick

liaowenxiong的博客 888

VIM使用系列:quickfix功能

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34209851的博客 641

Quickfixsigns_vim 项目常见问题解决方案

Quickfixsigns_vim 项目常见问题解决方案 项目基础介绍 Quickfixsigns_vim 是一个 Vim 插件,旨在通过在 Vim 编辑器中使用符号(signs)来标记快速修复列表(quickfix list)和位置列表(location list)中的项目。这些符号可以帮助开发者更直观地识别和定位代码中的错误、标记、更改等信息。该项目的主要编程语言是 Vimscript,适用于...

gitblog_00448的博客 761

vim QuickFix 窗口

From: http://hi.baidu.com/bali5/blog/item/82f87c0ab670a136b0351d4f.html 在上一节的图10中大家可以看到在窗口下面有一个显示查询结果的窗口, 这个窗口中列出了查询命令的查询结果, 用户可以从这个窗口中选择每个结果进行查看, 这个窗口叫"QuickFix"窗口, 以前也是一个vim的插件来的, 只不过现在成了vim的标准插件,

JoeBlackZQQ的专栏 1万+

vim的搜索列表-quickfix

打开vim的quickfix列表,可以将上述grep搜索结果展示,并且可以通过ctrl+w切换窗口后进行查看。

thebestismin的专栏 260

Vim-qf 终极指南:轻松驯服Quickfix窗口的完整教程

Vim-qf(即Vim Quickfix的缩写)是一款专为提升Vim编辑器中Quickfix窗口使用体验设计的插件,它通过丰富的设置、命令和映射,让开发者与Quickfix列表/窗口的交互变得前所未有的顺畅。无论是代码错误定位、搜索结果浏览还是多文件操作,vim-qf都能显著提升你的Vim工作效率。 ## 为什么选择Vim-qf?核心功能一览 ✨ ### 全局增强功能(任意窗口可用) vim

gitblog_00357的博客 793

Vim简明教程:基本可视模式

Vim简明教程:基本可视模式 可视模式让你可以选择文件的一部分内容,以便作比如删除,复制等工作。 进入可视模式 v 用v命令进入可视模式。当光标移动时,就能看到有一些文本被高亮显示了,它们就是被选中的内容。 三种可视模式 v 一个字符一个字符地选。从按下v的那个字符起,一直到光标所移动到的位置之间的内容都被选中。 V 一行一行地选。从按下V的那行起

manshq163com的专栏 1508

Vimrc高级配置:键位映射与自定义技巧

本文详细介绍了Vimrc高级配置中的键位映射与自定义技巧,重点讲解了Leader键系统设计、窗口管理、缓冲区操作、搜索替换功能以及代码编译运行环境的配置方法。文章涵盖了Ultimate Vimrc项目中的核心映射体系,包括文件操作、缓冲区管理、标签页导航、搜索优化和多语言编译支持等实用功能,为Vim用户提供了一套完整的高效工作流解决方案。 ## Leader键系统设计与最佳实践 在Vim的键...

gitblog_00777的博客 864
上一篇: gvim:2552: WARNING **: Unable to register window with path '/com/canonical/menu/4A00024': 已到超时限制
下一篇: vim 支持函数行参和常用补全
心若天府
博客等级 码龄15年 37粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值